创建多值字段用于在用户配置文件 Django 中存储用户技能集

问题描述 投票:0回答:2

我正在 django 中构建用户配置文件,我希望用户在其中输入他的技能集。任何特定用户都可以拥有多种技能,并且可能有许多用户具有相同的特定技能。

据我有限的理解,它是

userprofile
skills
之间的 ManyToMany 字段,但我希望允许用户添加他/她想要的任意数量的技能。

除此之外,我希望允许用户创建新技能(如果当前表中不存在)。除此之外,我想插入自动完成小部件。

我有什么想法/技巧可以做到这一点吗?我仍然可以完成自动完成部分,但无法理解如何添加新技能并将其链接到用户。它与SO

上的
tagfield

非常相似
django django-models autocomplete many-to-many
2个回答
3
投票

创建一个

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)

如果您使用管理员,人员/用户配置文件现在可以选择现有技能,或通过管理界面创建新技能。如果您不使用管理界面,则会涉及更多步骤,这些步骤超出了本问题的范围。


0
投票
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')
© www.soinside.com 2019 - 2024. All rights reserved.