2017-08-03 22 views
2

これらのモデルはdjangoの2つの異なるアプリケーションにあります。私は、2つのテーブルの間に主キーと外部キーの関係を作成しましたが、出力は望ましい出力ではありません。djangoのモデルでの外部キーと主キーの関係

class User(models.Model): 
    user_name = models.CharField(max_length=255, default=None) 
    email = models.CharField(max_length=255, default=None) 
    mobile_number = models.IntegerField(default=0) 
    created_on = models.DateTimeField(auto_now=True) 

class Todo(models.Model): 
    title = models.CharField(max_length=255, default=None) 
    description = models.CharField(max_length=255, default=None) 
    created_on = models.DateTimeField(auto_now=True) 
    user = models.ForeignKey('Account.User',on_delete=models.CASCADE) 

私はUserテーブルにエントリを作成し、割り当てられたIDが1であると仮定し、私はまた、(規則に従って有効な値ではない)user_id = 2Todoテーブルにエントリを作成することができ、そしてエントリが作成されます。いずれかがなぜ示唆できますか? Pythonシェルで

from Account.models import User 
my_user = (user_name = "Abhis", email = "[email protected]", mobile_number = "9999999999", created_on = datetime.datetime.today()) 
my_user.save()  

# it will create a row with id 1. 
from ToDo.models import Todo 
my_todo = (title = "title", description = "description", created_on = datetime.datetime.today(), user_id = 4) 
my_todo.save() 
# the row with this user_id = 4 is created, which must be illegal 
+0

は、オブジェクトを作成するために作成したコードを共有します。 – badiya

+0

実際には、フィールドは 'user'ではなく' user_id'です。また、文法エラーなしでコードを貼り付けることもできます。 –

+0

user_idカラムはデータベース自体で作成されているので、それを使用しています –

答えて

0

Djangoのドキュメントは、これは発生しません、それはのDoesNotExist例外がスローされますと述べています。親切

Django raises DoesNotExist when consulting an empty ForeignKey field or key that does not exist

下のリンクをチェックしかし、あなたが存在しているデータベースに接続している場合、それはまた、下記のリンクに記載されている適切な外部キーでない値を持ちます。これは明らかにモデルが間違っていると私はそれはとValueErrorを投げた外部キーにランダムな値を代入しようとしたとき

documentation: invalid foreign key and select_related

以下のようにscenario.Linkに変更されるべきであると述べています。あなたのDBにuser_id=4というエントリがないかどうか確認できますか?

関連する問題