2016-06-22 8 views
-1

私はSqlite dbを使用するdjangoプロジェクトを持っています。 と2つの簡単なテーブルがあります。djangoに外部キー値を保存しない理由

パーソン:

  1. MeliCode
  2. ます。FName

マーク:

  1. PERSONID - >外部キー
  2. グレード

これは私のモデルのコードです:

<code> 
from django.db import models 


class Person(models.Model): 
    melicode = models.CharField(max_length=10) 
    fname = models.CharField(max_length=100) 

    def __str__(self): 
     return self.fname 

    class Meta: 
     verbose_name = 'Person' 


class Mark(models.Model): 
    prs = models.ForeignKey(Person, on_delete=models.CASCADE) 
    grade = models.IntegerField() 

    def __int__(self): 
     return self.grade 

    class Meta: 
     verbose_name = 'Grade' 

</code> 

、これが私のフォームコードです:

<code> 
from django import forms 

from .models import Person 
from .models import Mark 


class Marks(forms.ModelForm): 
    person = forms.ModelMultipleChoiceField(Person.objects.all(), label='Name') 
    grade = forms.CharField(label='Mark') 

    class Meta: 
     model = Mark 
     fields = ['person', 'grade'] 

</code> 

と、これは私の意見です:

<code> 
from django.shortcuts import render, HttpResponse 
from .forms import Marks 


def Grade(request): 
    if request.method == "POST": 
     print(request.POST) 
     frc = Marks(request.POST) 
     if frc.is_valid(): 
      frc.save() 
      return HttpResponse("<p>Registered<p>") 
     else: 
      return render(request, 'grade.html', context=locals()) 

    else: 
     frc = Marks() 
     return render(request, 'grade.html', context=locals()) 

</code> 

が、任意の値を保存していません外部キーフィールドで

これはDjangoのツールバーから返された結果である:人がnullであることを示し

<code> 
INSERT INTO "App_mark" ("person", "grade") VALUES ('None', '10') 
<code> 

+0

保存する値はどれですか? – Sayse

+0

Person Id値。 –

答えて

0

あなたはのいずれかを定義する必要はありませんが、prsする必要がありますあなたのモデル

class Marks(forms.ModelForm): 
    person = forms.ModelMultipleChoiceField(Person.objects.all(), label='Name') 
    grade = forms.CharField(label='Mark') 

personで実際のフィールドに別の名前でフィールドを提供してきましたので、エラーの原因でありますモデルフォームなので、これらのフィールドは全くありません。

関連する問題