我试着把人,他们的技能和技能水平联系起来。我的模型看起来是这样的:
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)和
class Skill(models.Model):
name = models.CharField(max_length=200)
description = models.CharField(max_length=1000, blank=True)
active = models.BooleanField(default=True)它确实工作(在管理),我能够创建一个人,添加一些技能等。然而,我也需要每个人的技能水平信息。就像这样:
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'),
)我不知道我应该给人添加什么来获得每一项技能及其水平的信息。
谢谢。
发布于 2013-10-27 09:44:57
在积累了一些关于Django的经验之后,我意识到它为我的问题提供了相当简单的解决方案:)
我需要两个类,SkillLevel和SkillWithSkillLevel。
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)就这样。
有一点定制的管理是很有帮助的:
class SkillWithSkillLevelInline(admin.TabularInline):
model = SkillWithSkillLevel
extra = 3然后,当然,在PersonAdmin,inlines = [SkillWithSkillLevelInline]中注册PersonAdmin
人显然不需要skills = models.ManyToManyField(Skill)。
https://stackoverflow.com/questions/19236028
复制相似问题