python - 在 Django 模型中添加一对多关系
问题描述
我的 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
. 如何做到这一点?
解决方案
有很多方法可以实现你想要的。为此,让我们在名为的模型中添加一个反向关系contact_requests
:
project_request = models.ForeignKey(ProjectRequest, on_delete=models.CASCADE, related_name="contact_requests")
现在您可以使用PrimaryKeyRelatedField来显示ContactRequest
附加到每个ProjectRequest
.
class ProjectRequestSerializer(serializers.ModelSerializer):
contact_requests = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = ProjectRequest
fields = ('contact_requests', 'company_name', ...) # other fields
或者如果你想要 each 的所有值contact_requests
,那么你可以使用这样的嵌套关系:
class ProjectRequestSerializer(serializers.ModelSerializer):
contact_requests = ContactRequestSerializer(many=True, read_only=True)
class Meta:
model = ProjectRequest
fields = ('contact_requests', 'company_name', ...) # and so on
推荐阅读
- julia - Julia 函数组合 (∘) 运算符的 ASCII 替代方案?
- java - How do I completely exhaust the items in this array?
- r - 使用 R 代码的 6 组带有标签和子/超级脚本的维恩图
- r - 如何使用来自另一个数据帧的查找值有效地填充 R 数据帧
- python - 定义中的 Python Tkinter 图像问题
- c# - 您如何解决此参数无效错误?(C#、VisualStudio、WinForms)
- json - 使用 Apache 服务 React 应用程序可以工作,但从同一服务器加载 JSON 失败并显示 503
- flutter - 如何将我的小部件与 Flutter 中所有设备的 MediaQuery 对齐?
- duplicates - 避免冗余
- ruby - 在 Proc 定义中使用变量的值