Python django完整性错误
我有一个不寻常的病例。在我的models.py中,我有一个Event元素和两种不同类型的用户元素,它们引用它,如下所示Python django完整性错误,python,django,web-applications,Python,Django,Web Applications,我有一个不寻常的病例。在我的models.py中,我有一个Event元素和两种不同类型的用户元素,它们引用它,如下所示 class User(models.Model): attending = models.ManyToManyField('Event', related_name='User_attending') hosting = models.ForeignKey('Event', related_name='User_hosting') userna
class User(models.Model):
attending = models.ManyToManyField('Event', related_name='User_attending')
hosting = models.ForeignKey('Event', related_name='User_hosting')
username = models.CharField(max_length=40)
class Event(models.Model):
#event title
title = models.CharField(max_length=200)
#time created
created = models.DateField('Date Created',auto_now_add=True)
在my views.py中,当我想要创建用户时,我有以下几点:
user = User()
user.username = ""
user.gender = 0
user.fName = ""
user.lName = ""
....
user.save
这就是我的浏览器对我大叫并说:
完整性错误,
列表\u user.hosting\u id不能为空
有没有办法在不创建事件元素的情况下解决这个问题?您似乎想创建一个
用户
,而不给宿主
一个值。您可以通过在字段中添加blank=True、null=True
来完成此操作:
hosting = models.ForeignKey('Event', related_name='User_hosting',
blank=True, null=True)
您还需要添加迁移来修复数据库(因为数据库需要允许具有空字段的功能)。我建议为此使用。您似乎希望创建一个
用户
,而不给主机
一个值。您可以通过在字段中添加blank=True、null=True
来完成此操作:
hosting = models.ForeignKey('Event', related_name='User_hosting',
blank=True, null=True)
您还需要添加迁移来修复数据库(因为数据库需要允许具有空字段的功能)。我建议为此目的使用。你搞错了你的关系;他们应该在
事件中
,指向用户
你搞错了你的关系;它们应该在事件
上,指向相关注释上的用户
,您的相关名称在python中看起来很难看:它们应该都是小写。考虑到它们的含义,我也会将它们(users\u atticing)复数化,或者在相关注释上使用django约定(user\u atticing\u set),在python中,您的相关名称看起来很难看:它们都应该是小写。考虑到它们的含义,我也会将它们多元化(用户参与)或使用django约定(用户参与集),我认为它们是正确的。。。一个用户可以主持或参加多个活动;一个活动将有用户主持或用户参加…我认为他们是正确的,因为他们是。。。一个用户可以主持或参加多个活动;一个事件将有托管它的用户或参与它的用户…只是想在这里发表评论,因为在您似乎提供了必需的字段,但您仍然收到一个完整性错误,抱怨它不能为null的情况下,也会出现此完整性错误。我最终将问题追溯到我的序列化程序,在那里我忽略了字段。因此,如果上面的答案与您的问题不完全一致,请检查序列化程序。只想在此处发表评论,因为在您似乎提供了必填字段,但仍会收到完整性错误,抱怨它不能为null的情况下,也会出现此完整性错误。我最终将问题追溯到我的序列化程序,在那里我忽略了字段。因此,如果上述答案与您的问题不完全相同,请检查序列化程序。