亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號