我的問題是,我真的不知道如何把我的設計在關係數據庫方面。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)
通過這些模型,我可以在管理界面中創建新的'專長'時創建新的'屬性'。不過,我總是會看到全部現有的'屬性',而不僅僅是那些與我的新'專長'有關的屬性。有沒有辦法將觀點限制爲只有那些與新的'壯舉'一起創造的觀點?類似於創建「屬性」的「專長」的後鏈接?
基本上,當我創建或編輯'壯舉'時,我應該只能使用從此實例的頁面創建的'屬性'或添加一個新的'屬性'實例。我不希望'屬性屬於另一個'壯舉'(或另一個不相關的類)顯示出來。
注意,我不想一個字段添加到「屬性」類,因爲它也應該與其他類(如「字符」)一起使用
我也想做到這一點在管理界面中,因爲它爲我節省了不少工作。
在相關說明:有沒有辦法讓多對多字段爲空?或者我應該創建一個神奇的'空'值並將其設置爲默認值?