如何在 django 的一个序列化程序中拥有两个模型
Posted
技术标签:
【中文标题】如何在 django 的一个序列化程序中拥有两个模型【英文标题】:How can i have two models in one serializer in django 【发布时间】:2018-12-21 18:20:10 【问题描述】:我使用 django rest 框架创建了 API 视图,我有一个模型,该模型由其中的状态列表组成,并且在我试图插入的国家(由列表国家组成)外键的帮助下,它与另一个名为国家的模型相关联新状态(例如:糖果类别下的樱桃,垃圾食品类别下的汉堡,与“国家类别下的状态”完全相同)但我只得到状态输入表格,而没有让国家选择和联想,
## Heading ##
#model code---
class states(models.Model):
state = models.CharField(max_length=15)
country = models.ForeignKey(countries, on_delete=models.PROTECT)
#serializers code---
class StatesDetailSerializer(ModelSerializer):
class Meta:
model = states
fields= '__all__'
depth = 1
#viewsets code ------
class StateCreateAPIView(CreateAPIView):
queryset = states.objects.all()
serializer_class = StatesDetailSerializer
我附上了一张图片,教我如何获取国家数据并与州关联。如何获取国家列表以选择和标记到州 image here
【问题讨论】:
【参考方案1】:扩展您的序列化程序以包含这样的国家/地区字段
class StatesDetailSerializer(ModelSerializer):
country = serializers.PrimaryKeyRelatedField(queryset=countries.objects.all())
class Meta:
model = states
fields= ( 'country', ** plus all the fields you want **)
depth = 1
注意:不要在字段中使用__all__
。最好明确说明要序列化的字段(以避免应用程序中的潜在漏洞)
【讨论】:
亲爱的爱好者马丁非常感谢你,它成功了以上是关于如何在 django 的一个序列化程序中拥有两个模型的主要内容,如果未能解决你的问题,请参考以下文章
Django Rest Framework:具有通用外键的可写嵌套序列化程序
如何使用 django rest framework 序列化一个 ManyToManyField 和一个 Through Model