为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

梦里花落0921 2023-07-27 16:11:04
我有三个模型Store,Product并且Orderclass 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我将如何去做呢?
查看完整描述

1 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

在您的商店模型中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在StoreSerializer

class 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您的StoreSerializer

class StoreSerializer(serializers.ModelSerializer):

    order_count = serilizers.ReadOnlyField()


    class Meta:

        model = Store

        fields = ['other', 'fields', 'in', 'store', 'model', 'order_count']


查看完整回答
反对 回复 2023-07-27
  • 1 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信