我正在使用django框架在python中构建一个Web应用程序。在我的应用程序中,用户需要能够申请工作。
我不确定如何将已在作业模型中申请作业的用户列表保存为字段。
这是我的Job.py
模型:
class Job(models.Model):
user = models.ForeignKey(User, 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)
#applicants =
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('jobs:detail', kwargs={
'job_pk': self.id
}
)
我需要让申请人字段(目前已注释掉)来存储申请该职位的用户。我该怎么做?
答案 0 :(得分:1)
如果我正确理解您的问题,我认为您需要将您的模型设置为:
DELETE
这会创建从PATCH
到class Job(models.Model):
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
}
)
class Applicant(models.Model):
job = models.ForeignKey(Job, related_name="applicants")
user = models.ForeignKey(User)
的一对多关系,然后是从Job
到Applicant
的一对多关系。
答案 1 :(得分:1)
假设用户可以申请许多工作并且工作可以有很多用户申请,那么简单的解决方案就是多对多关系,由ManyToManyField
定义:
class Job(models.Model):
users = models.ManyToManyField(User)
现在您可能想要跟踪有关应用程序的其他信息(日期等),在这种情况下,显式中间模型可能很方便:
class Application(models.Model):
job = models.ForeignKey(Job)
user = models.ForeignKey(User)
date ⁼ models.DateTimeField(...)
# etc
class Meta:
# you probably don't want the same user
# to apply twice to the same job
unique_together = [("job", "user"),]
答案 2 :(得分:0)
正如manatuf所说,其他具有外键和一对一关系的模型可以解决问题。
我建议你先做Django 101 polls tutorial - 它有很好的解释,并且与你想要构建的相关模型架构非常相似。
玩得开心!