2010-12-14 92 views
0

我的問題是,我真的不知道如何把我的設計在關係數據庫方面。Django管理員:限制多對多的關係項目,以新創建的

我有一個類「專長」,它應該包含其他幾個類,即'統計','技能'和'屬性'列表。這些數字的確切數量取決於'專業'的實例,所以我不能只定義一個靜態數量的字段。

在普通的Python,我會簡單地使用列表:

class Feat(): 
    name 
    desc 
    att_effects = [] 
    skill_effects = [] 
    stat_effects = [] 

我嘗試使用許多對許多關係在Django複製本,但並沒有完全制定。

class Attribute_Name(models.Model): 
    name = models.CharField(max_length=100) 
    desc = models.TextField() 
    def __unicode__(self): 
     return str(self.name) 

... 

class Attribute(models.Model): 
    name = models.ForeignKey(Attribute_Name) 
    value = models.IntegerField() 
    def __unicode__(self): 
     return "%s: %s" % (self.name, self.value) 

... 

class Feat(models.Model): 
    name = models.CharField(max_length=100) 
    desc = models.TextField() 
    att_effects = models.ManyToManyField(Attribute) 
    skill_effects = models.ManyToManyField(Skill) 
    stat_effects = models.ManyToManyField(Stat) 

通過這些模型,我可以在管理界面中創建新的'專長'時創建新的'屬性'。不過,我總是會看到全部現有的'屬性',而不僅僅是那些與我的新'專長'有關的屬性。有沒有辦法將觀點限制爲只有那些與新的'壯舉'一起創造的觀點?類似於創建「屬性」的「專長」的後鏈接?

基本上,當我創建或編輯'壯舉'時,我應該只能使用從此實例的頁面創建的'屬性'或添加一個新的'屬性'實例。我不希望'屬性屬於另一個'壯舉'(或另一個不相關的類)顯示出來。

注意,我不想一個字段添加到「屬性」類,因爲它也應該與其他類(如「字符」)一起使用

我也想做到這一點在管理界面中,因爲它爲我節省了不少工作。

在相關說明:有沒有辦法讓多對多字段爲空?或者我應該創建一個神奇的'空'值並將其設置爲默認值?

回答

1

「有沒有一種方法可以將視圖限制爲僅與新創建的」專長「一起創建的視圖?就像創建」屬性「的」專長「的反向鏈接?

是:使用ModelAdmin的查詢集功能as described in this question

相關問題