数据库模型结构django - 通过模型

时间:2015-07-16 08:59:31

标签: django database

好的 - 让我说我有一个设置,我有一组人和一组技能和一组关卡。

每种技能都有一个与之相关的关卡子集 - 每种技能都可以使用不同的子集。每个人都可以在级别的子集中执行技能的子集。一个人提供特定级别的每项技能都有与之相关的价格。

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)

但我怎样才能包括关卡?我是否可以使用直通模型添加外键以提供技能。有没有办法可以在管理员中查看,以便您能够编辑人员管理页面中提供的技能和级别列表?

1 个答案:

答案 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)