Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将hashtag分配给django模型_Python_Django - Fatal编程技术网

Python 将hashtag分配给django模型

Python 将hashtag分配给django模型,python,django,Python,Django,我在django网站上定义了工作模式,如下所示: class Job(models.Model): title = models.CharField(max_length=100) description = models.TextField() def __str__(self): return self.title 工作所需的技能: class SkillsGroup(models.Model): group_name = models.C

我在django网站上定义了工作模式,如下所示:

class Job(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()

    def __str__(self):
        return self.title
工作所需的技能:

class SkillsGroup(models.Model):
    group_name = models.CharField(max_length=150)

    def __str__(self):
        return self.group_name


class Skill(models.Model):
    skill_group = models.ForeignKey(SkillsGroup)
    name = models.CharField(max_length=200)

    def __str__(self):
        return self.skill_group.group_name + ' - ' + self.name
现在我的问题是如何为每个工作分配一个技能列表(如hashtags或…),以便每个用户可以根据特定技能找到工作。 类似于stackoverflow中为每个问题分配标记的方式


我是否可以在不使用外部应用程序/库的情况下实现此功能?

听起来您希望
Skill
成为
ForiegnKey
to
Job
也许您想看看这个django应用程序:

您需要许多字段。我将简化一点你的例子

class Job(models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    skills = models.ManyToManyField(Skill)

    def __str__(self):
        return self.title    

class Skill(models.Model):
    name = models.CharField(max_length=100)
您现在可以像这样向工作中添加或删除所需的技能,但请确保技能实例已保存在数据库中,或在工作实例的“技能”属性中创建它:

job = Job.objects.get(title="My Vacancy")

# Create a new skill for my job offer
job.skills.create(name="Special Skill")

# Add an existing skill to my job offer
skill = Skill.objects.get(name="Another Special Skill")
job.skills.add(skill)

# I've changed my mind, I don't need the last skill to my vacancy
job.skills.remove(skill)
此字段也可以像Queryset一样工作:

# Check required skills for a job
skills = job.skills.all()

# Lets find some job with special skills 
jobs = Job.objects.filter(skills__name__icontains="Special Skill")

我以前用Django的时候用过。看起来它仍在维护中。这也不是唯一的标签解决方案。我的问题是,每项技能都可以分配给许多工作。这是一个评论,不是答案。这是一个评论,不是答案。谢谢你的帮助。我想知道是否有什么方法可以在不使用外部应用程序/库的情况下实现此功能?@ErfanGholamian well。。如果你想遵循经典的关系理论,你应该为所有技能、所有工作以及它们之间的关系(如用户技能、技能和工作)创建额外的表。在我看来,这是最难做到的。或者你可以将所有技能存储在char字段中(或者在数组字段中存储postgre),并创建一些应用程序逻辑来处理这些技能。使用现有的应用程序——pythonic-way。@两位比特炼金术士,谢谢你指点我。但是,请记住,代表<50的新用户不能评论其他人的帖子。@allin我和所有新用户一样清楚