如何在Django中的一个序列化器中处理两个模型?

8

我使用django rest framework创建了API视图,我有一个模型,其中包含一些州的列表,并且通过另一个名为country的模型(其中包含一些国家的列表)的外键进行关联。我正在尝试插入新的州(例如:在甜点类别下添加樱桃,在垃圾食品类别下添加汉堡,就像“国家类别下的州”一样),但是我只能得到州的输入表单,而无法选择和关联国家。

## 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

我已经附上了一张图片,请教我如何获取国家数据并与州/省相关联。如何获取国家列表以选择并标记到各个州/省中。这里是图片

1个回答

11

将您的序列化程序扩展以包括如下国家字段

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__来表示字段。明确指出您要序列化的字段总是更好的选择(以避免应用程序中可能存在的潜在漏洞)。


1
亲爱的热心的马丁,非常感谢,它起作用了。 - nithin singh Gm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接