首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库模型结构django - through模型

数据库模型结构django - through模型
EN

Stack Overflow用户
提问于 2015-07-16 16:59:31
回答 1查看 78关注 0票数 0

好的-假设我有一个设置,其中我有一组人,一组技能和一组级别。

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

例如,A可以做技能、空手道和创造性写作。他为25 40提供黑带级别的空手道,为25 30提供红带级别的空手道,并为25 25提供初学者级别的创意写作。

下面是我如何在没有关卡的情况下进行设置。

代码语言:javascript
复制
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)

但是我怎么才能包括关卡呢?我可以添加一个外键到关卡与通过模型提供的技能。有没有一种方法可以在管理员中查看,以便您能够从个人管理页面编辑人员提供的技能和级别列表?

EN

回答 1

Stack Overflow用户

发布于 2015-07-16 18:04:19

您应该创建一个通过m2m关系链接到技能类的级别类。并将SkillOffered中的技能属性替换为skill_level属性。

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31449763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档