猿问

Django Rest Framework,如何获取另一个外键内外键的对象数量

我有三个模型Store,Product并且Order


class Store(models.Model):

    ......


class Product(models.Model):

    store = models.ForeignKey(Store, ...)


class Order(models.Model):

    product = models.ForeignKey(Product ...)

    delivered = models.BooleanField()

我想创建一个@property模型Store来计算包含其产品的订单数,并且还包含delivered=True


我将如何去做呢?


梦里花落0921
浏览 109回答 1
1回答

繁花不似锦

在您的商店模型中property照常定义class Store(models.Model):    ......        @property    def order_count(self):        return Order.objects.filter(product__store=self, delivered=True).count()class Product(models.Model):    store = models.ForeignKey(Store, ...)class Order(models.Model):    product = models.ForeignKey(Product ...)    delivered = models.BooleanField()然后在序列化器中,您有两种方法将该order_count属性包含在序列化器中 -定义一个SerializerMethodField在StoreSerializerclass StoreSerializer(serializers.ModelSerializer):   order_count = serilizers.SerializerMethodField()   def get_order_count(self, instance):       return instance.order_count # the property in store object   class Meta:       model = Store       fields = ['other', 'fields', 'in', 'store', 'model', 'order_count']声明order_count为ReadOnlyField您的StoreSerializerclass StoreSerializer(serializers.ModelSerializer):    order_count = serilizers.ReadOnlyField()    class Meta:        model = Store        fields = ['other', 'fields', 'in', 'store', 'model', 'order_count']
随时随地看视频慕课网APP

相关分类

Python
我要回答