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

2024-09-28 22:34:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个问题,我需要一个想法如何解决它,因为我需要它为很多事情。 我会尽量清楚我需要什么。你知道吗

首先,我想做的是一个药物的医疗处方,所以我需要保存一个病人的数据,以及医生为病人要求的药品数量。 所以我有两个模型,病人数据模型和药物模型。你知道吗

型号.py

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)

我的问题是我不知道该把药存到谁那里,因为我需要在同一个模板中添加医生想要的药品,我有一个按钮为下一个药品添加新的字段,我通过克隆主窗体来完成。你知道吗

enter image description here

我想知道django是否有方法可以转换列表中的字段,或者有什么方法可以帮助我保存药物,即使字段的名称相同。我试着通过视图中的数据来获取它们,但它只获取主字段,而不获取克隆字段。你知道吗


Tags: 数据方法模型defaultmodelmodels事情class
1条回答
网友
1楼 · 发布于 2024-09-28 22:34:04

是的,您需要的是FormSets,它允许您在同一页上处理多个表单。你知道吗

举个例子:

# forms.py
form django import forms
from your.models import PrescriptionDrugs

class PrescriptionDrugsForm(forms.ModelForm):

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

在视图.py你知道吗

# 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)

在模板.html你知道吗

<form method="POST">
    {% csrf_token %}
    {{ form.management_for }}
    {% for f in form %}
        {{ f.as_p }}
    {% endfor %}
</form>

相关问题 更多 >