RelatedObjectsDoesNotExist具有多个属性

2024-05-09 05:45:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个工作板,当你创建工作时,你可以选择一个或多个与工作相关的技能。工作模式如下:

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约束。这个错误也有点模糊,所以我的搜索不顺利。我怎样才能解决这个问题?你知道吗


Tags: truedefaultdatemodelmodels技能joblength
1条回答
网友
1楼 · 发布于 2024-05-09 05:45:52

编辑

我认为这个问题与这个概念有关。你知道吗

似乎一个Job可以有几个Skill相关的。一个Skill能与几个Jobs相关吗?如果是,则必须将其声明为ManyToManyField,而不是ForeignKey。否则,Job必须是Skill中的ForeignKey,而不是相反。你知道吗

相关问题 更多 >

    热门问题