也许我的问题已经回答了,但是我什么也找不到。 可以说,我使用Django + Django REST作为后端来构建库存系统。为此,我有两个模型:
class Shoe(models.Model):
_id = models.AutoField(primary_key=True)
description = models.CharField(null=False, blank = False)
provider = models.CharField(null=False, blank=False)
category = models.CharField(choices=CATEGORIES, null=False, blank=False)
class Sizes(models.Model):
shoe_id = models.ForeignKey(Shoe, on_delete=models.CASCADE)
size = models.IntegerField(choices=SIZE_LIST, null=False, blank=False)
amount = models.IntegerField(null=False,default=0)
我的疑问是,如何(使用ModelViewSet,根据我对DRF的经验,这是最简单的方法)来提供JSON文件,如下所示:
[
{
"_id": "1",
"description": "Air Max Black",
"provider": "NIKE",
"category": "Casual",
"available_sizes": {36: 400, 37: 250}, #size: amount
"amount": "650" #total amount
},
]
基于我对DRF的理解,可以在JSON中“联接”两个模型,我应该编写一个自定义序列化程序吧? 通常我的序列化器就像
class FooSerializer(serializers.ModelSerializer):
class Meta:
model = Foo
fields = ['some_stuff_here']
请帮助我或推荐我阅读有关此内容的材料,我已经阅读了有关序列化程序的DRF文档,但无法理解如何进行此类操作。
答案 0 :(得分:3)
您可以只使用nested relation:
class ShoeSerializer(serializers.ModelSerializer):
class Meta:
model = Shoe
fields = '__all__' # all for all fields, or a tuple with the fields
class SizeSerializer(serializers.ModelSerializer):
shoe = ShoeSerializer(many=True, read_only=True)
class Meta:
model = Size
fields = '__all__'
但是我相信您的模型是倒置的,如果您想增加鞋子实例的大小,也许size
应该是shoe
模型的代名词?如果是这种情况,只需反转序列化器即可。