2016-03-08 40 views
0

我遇到這個問題,我需要一個想法如何解決它,因爲我需要它的很多東西。 我會盡我所能清楚我所需要的。保存在兩個不同的模型中,可以同時保存很多字段

首先我想要做的是藥物的醫療處方,所以我需要保存病人的數據和儘可能多的藥物,醫生會要求病人。 所以我有2個模型,患者數據模型和藥物模型。

models.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可以在字段轉換列表或東西,可以幫我保存的藥物,即使字段具有相同名稱的方式。我嘗試通過視圖中的清空數據來獲得它們,但它只讓我成爲主要領域,而不是克隆領域。

回答

0

是的,你需要的是FormSets,它可以讓你在同一頁面上使用多個表格。

下面的例子:

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

class PrescriptionDrugsForm(forms.ModelForm): 

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

上views.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) 

上template.html

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

如果您使用formsSet模式的形式,裏面方法'form_valid (self,form):for f in form:f.save()' – DJeanCar

+0

我編輯了我的答案 – DJeanCar

+0

有沒有辦法解決e額外形式的數量,並做它dinamic? –

相關問題