django模型中的外键和主键关系

时间:2017-08-03 11:33:07

标签: python django python-2.7 django-models

这些模型在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,但我也可以在Todo表中创建一个带user_id = 2的条目(其中根据规则不是有效值,并创建条目。任何人都可以提出原因吗?

在Python shell中:

from Account.models import User
my_user = ( user_name = "Abhis", email = "aa@aa.com", 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 

1 个答案:

答案 0 :(得分:0)

django文档声明这不会发生,它会抛出DoesNotExist异常。请查看以下链接

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

但是,如果要连接到存在的数据库,并且其值不是正确的外键,也会在下面的链接中提到。它清楚地表明模型是错误的,应该在这种情况下改变。下面的链接

documentation: invalid foreign key and select_related

当我尝试将随机值分配给外键时,它抛出了ValueError。您可以检查您的数据库是否没有{{1}}的条目。