我正在构建一个需要一对多模型关系的django web应用程序。我阅读了文档,并说它在模型字段中使用ForeignKey
。如何将对象添加到django中的一对多关系中?
就我而言,每个用户都需要拥有一个一对多的工作模型领域,该工作模型将跟踪该用户完成的工作。
这在Django我相信表示,像这样:
class User(AbstractBaseUser, PermissionsMixin):
...
job_history = models.ForeignKey(Job, on_delete=models.CASCADE)
的工作模式是这样的:
class Job(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="jobs")
created_at = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=30)
description = models.TextField()
pay = models.FloatField()
category = models.CharField(max_length=3, choices=JOB_CATEGORY_CHOICES)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('jobs:detail', kwargs={
'job_pk': self.id
}
)
在我看来,我想一个作业添加到job_history
一对多领域。但我不知道如何写这个。这是我目前的观点:
@login_required
def job_hire(request, account_pk, job_pk):
user = get_object_or_404(account_pk)
job = get_object_or_404(job_pk)
# I now need to save the job object in the one to many field of the user object. But how?
messages.success(request, "You have hired an applicant.")
return HttpResponseRedirect(reverse('jobs:find'))
如何将作业添加到用户模型中的一对多字段以保存用户作业?
在用户现场工作模式是指工作的创造者。即使我创建了与用户字段相同的另一个字段,但使用不同的名称来跟踪所有作业,我仍然需要将这个字段与每个用户而不是每个作业一起存储。 @arie –
好的,从看你的模型来看,这并不明显。尽管如此,在视图中连接用户和工作应该仍然是一样的。 – arie
如果同一个用户被雇佣两个工作,那么这行'用户'。job_history_id = job_pk'保存它们或将最近添加的作业覆盖先前存储在该字段中的旧作业。 @arie –