我正在创建一个工作板,当你创建工作时,你可以选择一个或多个与工作相关的技能。工作模式如下:
class Job(models.Model):
def __unicode__(self):
return unicode(self.date_posted)
title = models.CharField(max_length=256)
description = models.TextField()
payment = models.IntegerField()
skills = models.ForeignKey(Skill)
location = models.CharField(max_length=128)
university = models.ManyToManyField(University, blank=True)
client = models.ForeignKey(Client)
freelancers_applied = models.ManyToManyField(Freelancer, blank=True, related_name="%(class)s_freelancers_applied")
freelancer_accepted = models.ForeignKey(Freelancer, blank=True, null=True,
related_name="%(class)s_freelancer_accepted")
completed = models.BooleanField(default=False)
date_posted = models.DateField(default=django.utils.timezone.now())
closing_date = models.DateField(blank=True, null=True)
active = models.BooleanField(default=True)
技能模型看起来很简单:
class Skill(models.Model):
skill = models.TextField(primary_key=True, max_length=128)
发布表单时,我从request.POST
获得技能,从数据库中检索它们所代表的技能,并尝试将它们逐个添加到新模型中:
data = request.POST
j = Job()
skills = Skill.objects.filter(skill__in=data.getlist('skills'))
for skill in skills:
j.skills.add(skill)
当它试图执行j.skills.add(skill)
行时,它会失败并出现错误
RelatedObjectDoesNotExist at /jobs/post-job/
Job has no skills.
我想在尝试此操作之前可能必须保存对象,但我不能,因为它违反了notnull约束。这个错误也有点模糊,所以我的搜索不顺利。我怎样才能解决这个问题?你知道吗
编辑
我认为这个问题与这个概念有关。你知道吗
似乎一个
Job
可以有几个Skill
相关的。一个Skill
能与几个Jobs
相关吗?如果是,则必须将其声明为ManyToManyField
,而不是ForeignKey
。否则,Job
必须是Skill
中的ForeignKey
,而不是相反。你知道吗相关问题 更多 >
编程相关推荐