好的 - 让我说我有一个设置,我有一组人和一组技能和一组关卡。
每种技能都有一个与之相关的关卡子集 - 每种技能都可以使用不同的子集。每个人都可以在级别的子集中执行技能的子集。一个人提供特定级别的每项技能都有与之相关的价格。
E.g。 A人可以做空手道和创意写作。他提供40英镑的黑带级别的空手道,30英镑的红带级别以及25英镑的初级创意写作。
以下是我没有关卡设置的方法。
class Person(models.Model):
...
skills = models.ManyToManyField(Skill, through='SkillOffered')
class Skill(models.Model):
...
class SkillOffered(models.Model):
person = models.ForeignKey(Person)
skill = models.ForeignKey(Skill)
price = models.DemicalField(max_digits=6, decimal_places=2)
但我怎样才能包括关卡?我是否可以使用直通模型添加外键以提供技能。有没有办法可以在管理员中查看,以便您能够编辑人员管理页面中提供的技能和级别列表?
答案 0 :(得分:0)
你应该用m2m关系创建一个与Skill类相关联的Level类。并通过skill_level属性替换SkillOffered中的技能属性。
class Person(models.Model):
...
class Skill(models.Model):
...
levels = models.ManyToManyField(Levels, through='SkillLevels')
class Level(models.Model):
...
class SkillLevels (models.Model):
skill = models.ForeignKey(Skill)
level = models.ForeignKey(Level)
class SkillOffered(models.Model):
person = models.ForeignKey(Person)
skill_level = models.ForeignKey(SkillLevels)
price = models.DemicalField(max_digits=6, decimal_places=2)