2017-09-30 3 views
0

この質問はthisに関連しています。私が作成した信号に関連して、私のフォームデータを保存したいと思います:Djangoシグナルとフォームis_valid

モデル:

class PatientInfo(models.Model): 
    lastname = models.CharField('Last Name', max_length=200) 
    ... 

    class MedicalHistory(models.Model): 
    patient = models.OneToOneField(PatientInfo, on_delete=models.CASCADE, primary_key=True) 
    physician_name = models.CharField('Physician', max_length=200, null=True, blank=True) 
    ... 

    @receiver(post_save, sender=PatientInfo) 
    def create_medical_history(sender, **kwargs): 
    if kwargs.get('created', False): 
    MedicalHistory.objects.create(patient=kwargs.get('instance')) 

ビュー

class MedicalCreateView(CreateView): 
    template_name = 'patient/medical_create.html' 
    model = MedicalHistory 
    form_class = MedicalForm 
    success_url = '/' 

    def post(self, request, pk): 
     form = self.form_class(request.POST) 
     if form.is_valid(): 
     patiente = form.save(commit=False) 
     physician_name = form.cleaned_data['physician_name'] # do not delete 
     patiente.save() 
     messages.success(request, "%s is added to patient list" % physician_name) 
     return redirect('index') 
     else: 
     print(form.errors) 

上記の私のコードは私のMedicalHistoryテーブルに2つのエントリを保存し、患者のフィールドがありますPatient_info.idにリンクされ、もう一方は空ですが、フォームデータが入力されます。

ご協力いただきまして誠にありがとうございます。

答えて

0

私のMedicalHistoryモデルは、自分のPatientInfoに基づいて自動的に独自のモデルを生成しています。私はこの

def post(self, request, pk): 

    form = self.form_class(request.POST) 
    if form.is_valid(): 
    patiente = form.save(commit=False) 
    physician_name = form.cleaned_data['physician_name'] # do not delete 
    patiente.save() 
    messages.success(request, "%s is added to patient list" % physician_name) 
    return redirect('index') 
    else: 
    print(form.errors) 
を削除

class MedicalCreateView(CreateView) 

class MedicalCreateView(UpdateView): 

に: MedicalHistory IDを既存のデータを取り込むの私の方法は、変更することです
関連する問題