2017-12-23 11 views
0

私は自分のコードにいくつか問題があります。私は8つの属性を持つモデルを持っているModelFormからフォームを作ったが、私はユーザーがそれらのうちの1つだけを入力し、1つはシステムから入力したいと思う。ユーザーが入力するものは大丈夫ですが、システムで満たされたものは機能しません。OneToOneFieldはこれと関連していません。

models.py

class SeminarProposal(md.Model): 
    # diisi oleh mahasiswa 
    fileProposal = models.FileField() 

    # This is the one is filled with system 
    proposal = models.OneToOneField(Proposal, 
            on_delete=models.CASCADE, 
            related_name="propSid", 
            unique=True, blank=True, null=True) 
    masabimbingan = models.BooleanField(default=True) 

    # disi oleh admin 
    tanggal = models.DateField(default=timezone.now, blank=True,null=True) 
    tempat = models.CharField(max_length=30, blank=True, null=True) 

    # diisi oleh dosen pembimbing 
    dospemsetuju = models.BooleanField(default=False, blank=True) 

    # diisi oleh kaprodi 
    penguji1 = models.ForeignKey(Dosen, 
           on_delete=models.CASCADE, 
           related_name="penguji1", 
           blank=True, null=True) 
    penguji2 = models.ForeignKey(Dosen, 
           on_delete=models.CASCADE, 
           related_name="penguji2", 
           blank=True, null=True) 


    def __str__(self): 
     return "Sidang untuk " + self.proposal.judul 

view.py

def daftarSeminar(request): 
    if request.method == 'POST': 
     form = FormSeminar(request.POST, request.FILES) 
     print(request.user) 
     if form.is_valid(): 
      form.save(commit=False) 
      form.cleaned_data['proposal'] 
      print(request.user) 
      prop = Proposal.objects.get(akun=request.user) 
      form.proposal = prop 
      print(form.proposal) #to confirm that this is not None 
      form.save() 
      return redirect('proposal:bimbingan') 
     else: 
      return render(request, 'sidprop.html' , {'oke': 'oke'}) 
     return redirect('proposal:index') 

form.py

class FormSeminar(forms.ModelForm): 

    class Meta: 
     model = SeminarProposal 
     fields = ['fileProposal','proposal'] 

ありがとうございます。 Terima Kasih。

+0

あなたは「それは働いていない」とはどういう意味ですか?あなたは何か誤りがありますか? –

+0

エラーは、関係がnullになることです。例外や類似のようなプロセスにエラーはありませんが、結果は 'prop = Proposal.objects.get(akun = request.user)と関連させたいときです。 form.proposal = prop print(form.proposal)#これが「None」ではないことを確認してください。 – juunnn

+0

あなたの要件を理解するのに少し問題があります。理解を深めるために、変数を英語に変換するのが賢明かもしれないと思います。 –

答えて

0

代わりにフォームデータを変更するのは、フォームからオブジェクトを取得し、オブジェクトのデータを変更します。

if form.is_valid(): 
    obj = form.save(commit=False) 
    prop = Proposal.objects.get(akun=request.user) 
    obj.proposal = prop 
    obj.save() 
    return redirect('proposal:bimbingan') 
関連する問題