首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存在两个不同的模型中,可以同时保存多个字段。

保存在两个不同的模型中,可以同时保存多个字段。
EN

Stack Overflow用户
提问于 2016-03-08 19:14:40
回答 1查看 72关注 0票数 0

我有这个问题,我需要一个如何解决它的想法,因为我需要它做很多事情。我会尽我所能地把我需要的东西弄清楚。

首先,我要做的是一个药物处方,所以我需要保存一个病人的数据,多少药品和医生要求病人。所以我有两个模型,病人数据模型和药物模型。

models.py

代码语言:javascript
复制
class RecipePatientData(models.Model):
    patient = models.ForeignKey(patientData)
    created_at = models.DateTimeField(auto_now_add=True)
    doctor = models.ForeignKey(DoctorData)
    observations = models.CharField(max_length=300)

class PrescriptionDrugs(models.Model):
    recipe_data = models.ForeignKey(RecipePatientData)
    prescripted_drug = models.ForeignKey(Drugs)
    quantity = models.IntegerField(default=0)
    day_of_treatment = models.IntegerField(default=0)

我的问题是,我不知道谁应该保存药物,因为我需要在同一个模板中添加尽可能多的药物,我有一个按钮为下一种药物添加新的字段,我通过克隆主表单来完成这个任务。

我想知道django是否有一种方法可以将字段转换为列表中的字段,或者某种可以帮助我保存药物的方法,即使字段名相同。我试图通过视图中的cleaned_data获取它们,但它只为我提供了主字段,而不是克隆字段。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-08 19:24:19

是的,您需要的是FormSets,它允许您在同一个页面上处理多个窗体。

这里有一个例子:

代码语言:javascript
复制
# forms.py
form django import forms
from your.models import PrescriptionDrugs

class PrescriptionDrugsForm(forms.ModelForm):

    class Meta:
         model = PrescriptionDrugs
         fields = ("__all__")

论views.py

代码语言:javascript
复制
# views.py
class YourView(FormView):
    template_name = 'template.html'
    form_class = formset_factory(PrescriptionDrugsForm, extra=3) #number of forms
    success_url = '/your-url/'

    def form_valid(self, form):
        form f in form:
            f.save()
        return super(YourView, self).form_valid(form)

论template.html

代码语言:javascript
复制
<form method="POST">
    {% csrf_token %}
    {{ form.management_for }}
    {% for f in form %}
        {{ f.as_p }}
    {% endfor %}
</form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35876046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档