我的问题是,我真的不知道如何把我的设计在关系数据库方面。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)
通过这些模型,我可以在管理界面中创建新的'专长'时创建新的'属性'。不过,我总是会看到全部现有的'属性',而不仅仅是那些与我的新'专长'有关的属性。有没有办法将观点限制为只有那些与新的'壮举'一起创造的观点?类似于创建“属性”的“专长”的后链接?
基本上,当我创建或编辑'壮举'时,我应该只能使用从此实例的页面创建的'属性'或添加一个新的'属性'实例。我不希望'属性属于另一个'壮举'(或另一个不相关的类)显示出来。
注意,我不想一个字段添加到“属性”类,因为它也应该与其他类(如“字符”)一起使用
我也想做到这一点在管理界面中,因为它为我节省了不少工作。
在相关说明:有没有办法让多对多字段为空?或者我应该创建一个神奇的'空'值并将其设置为默认值?