2012-07-18 92 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