首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多对多技能和技能水平

多对多技能和技能水平
EN

Stack Overflow用户
提问于 2013-10-07 22:38:46
回答 1查看 108关注 0票数 0

我试着把人,他们的技能和技能水平联系起来。我的模型看起来是这样的:

代码语言:javascript
复制
class Person(models.Model):
    first_name = models.CharField(max_length=200)
    middle_name = models.CharField(max_length=200, blank=True)
    last_name = models.CharField(max_length=200)
    skills = models.ManyToManyField(Skill)

代码语言:javascript
复制
class Skill(models.Model):
    name = models.CharField(max_length=200)
    description = models.CharField(max_length=1000, blank=True)
    active = models.BooleanField(default=True)

它确实工作(在管理),我能够创建一个人,添加一些技能等。然而,我也需要每个人的技能水平信息。就像这样:

代码语言:javascript
复制
BASIC = 'BAS'
NOVICE = 'NOV'
INTERMEDIATE = 'INT'
ADVANCED = 'ADV'
EXPERT = 'EXP'

SKILL_LEVEL_CHOICES = (
    (BASIC, 'Basic knowledge'),
    (NOVICE, 'Novice (Limited experience)'),
    (INTERMEDIATE, 'Intermediate (Practical application)'),
    (ADVANCED, 'Advanced knowledge'),
    (EXPERT, 'Expert'),
)

我不知道我应该给人添加什么来获得每一项技能及其水平的信息。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-27 09:44:57

在积累了一些关于Django的经验之后,我意识到它为我的问题提供了相当简单的解决方案:)

我需要两个类,SkillLevel和SkillWithSkillLevel。

代码语言:javascript
复制
class SkillLevel(models.Model):
    name = models.CharField(max_length=20)
    description = models.CharField(max_length=100, blank=True)

class SkillWithSkillLevel(models.Model):
    skill = models.ForeignKey(Skill)
    level = models.ForeignKey(SkillLevel)
    person = models.ForeignKey(Person)

就这样。

有一点定制的管理是很有帮助的:

代码语言:javascript
复制
class SkillWithSkillLevelInline(admin.TabularInline):
    model = SkillWithSkillLevel
    extra = 3

然后,当然,在PersonAdmin,inlines = [SkillWithSkillLevelInline]中注册PersonAdmin

人显然不需要skills = models.ManyToManyField(Skill)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19236028

复制
相关文章

相似问题

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