我正在 django 中构建用户配置文件,我希望用户在其中输入他的技能集。任何特定用户都可以拥有多种技能,并且可能有许多用户具有相同的特定技能。
据我有限的理解,它是
userprofile
和 skills
之间的 ManyToMany 字段,但我希望允许用户添加他/她想要的任意数量的技能。
除此之外,我希望允许用户创建新技能(如果当前表中不存在)。除此之外,我想插入自动完成小部件。
我有什么想法/技巧可以做到这一点吗?我仍然可以完成自动完成部分,但无法理解如何添加新技能并将其链接到用户。它与SO
上的
tagfield
非常相似
创建一个
Skill
模型。该模型表示数据库中的一个表,其中表中的每一行都是一个特定的技能。每项技能均由 name
字段描述。然后使用 ManyToMany
字段将其链接到您的人员。那么你是在说“每个人可以拥有零个或多个技能”
class Skill(models.Model):
name = models.CharField(max_length=50)
class Person(models.Model):
skills = models.ManyToManyField(Skill, blank=True, null=True)
如果您使用管理员,人员/用户配置文件现在可以选择现有技能,或通过管理界面创建新技能。如果您不使用管理界面,则会涉及更多步骤,这些步骤超出了本问题的范围。
def add_skill(request, user_id):
if request.method == 'POST':
user = get_object_or_404(User, pk=user_id)
skill_name = request.POST.get('skill_name')
# Check if the skill already exists
skill, created = Skill.objects.get_or_create(name=skill_name)
user.skills.add(skill)
return render(request, 'success.html')