【发布时间】:2019-09-05 08:00:44
【问题描述】:
我的 Django-REST 应用程序中有两个模型。
ProjectRequest 和 ContactRequest
我想做到,每个Projectrequest contains a list of the refered Contactrequests.
class ProjectRequest(models.Model):
project_name = models.CharField(max_length=50)
company_name = models.CharField(max_length=50)
#make array of technologiestechnologies = models.ArrayField(base_field=) (blank=True)
project_description = models.CharField(max_length=200)
project_type = models.CharField(max_length=30)
budget_estimation = models.IntegerField(
default=1000,
validators=[
MinValueValidator(1800),
MaxValueValidator(5000000)
])
#time_estimation = models.DateTimeField(default=None, blank=True, null=True)
class ContactRequest(models.Model):
topic = models.CharField(max_length=30)
description = models.CharField(max_length=200)
time = models.CharField(max_length=15)
project_request = models.ForeignKey(ProjectRequest,
on_delete=models.CASCADE)
到目前为止,我已经使用外键建立了关系,到目前为止它工作正常。但是我想扩展功能,因此 ProjectRequest 包含所有项目请求的列表。我尝试了几个不同的字段,但没有任何运气,我只能找到ManyToMany 和OneToOne 的字段。如何实现?
【问题讨论】:
-
你在使用 Django Rest 框架吗?
-
是的,但我认为它不会改变模型结构?
-
ProjectRequest contains a list of all the projectrequest或ProjectRequest contains a list of all the contactrequest:) ? -
抱歉给您带来了困惑。
ProjectRequest contains a list of all the contactrequest -
外键 is 是建立一对多关系的正确方法。但是,我认为您可能希望将
related_name传递给您的外键字段,例如project_request = models.ForeignKey(ProjectRequest, related_name="contacts")(不要忘记在进行此编辑后添加迁移) - 然后您可以访问项目中的所有相关联系请求使用ProjectRequest.objects.get(project_name="something").contacts.all()请求
标签: python django model one-to-many