2012-07-18 90 views
0

我有一个不寻常的情况。在我的models.py中,我有一个Event元素和两个不同类型的用户元素,如下所示。django完整性错误

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) 

在我的views.py,我当我想创建一个用户,我有以下一些:

user = User() 
    user.username = "" 
    user.gender = 0 
    user.fName = "" 
    user.lName = "" 
    .... 
    user.save 

这是当我的浏览器对我大喊大叫,说:

完整性错误, list_user.hosting_id可能不是NULL

任何想法的解决方法,而不创建一个Event元素吗?

+1

在相关说明中,您的'related_name's在Python中看起来很丑陋:它们应该都是小写。考虑到它们的含义,我也会将它们复数化(users_attending)或者使用django惯例(user_attending_set) – Stefano 2012-07-18 11:50:29

回答

1

看来你想创建一个User而不给hosting一个值。您可以通过添加blank=True, null=True到外地做:

hosting = models.ForeignKey('Event', related_name='User_hosting', 
          blank=True, null=True) 

您还需要添加一个迁移到修复数据库(以具有空字段需要由数据库被允许的能力)。为此建议使用South

+0

这样做。谢谢。 – itcropper 2012-07-21 22:23:04

1

你对你的关系进行了愚蠢的处理;他们应该在Event,指向User

+0

我认为他们是正确的,因为他们是......用户可以主持或参加多个活动;一个事件将有users_hosting它或users_attending它... – Stefano 2012-07-18 11:52:36