Python 将hashtag分配给django模型
我在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
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
toJob
也许您想看看这个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我和所有新用户一样清楚