我如何在Django中实现LEFT JOIN的等效- Django中的嵌套序列化器



我有下面的模型规格。MailingList是客户和电子邮件之间的参考表/模型。它还有其他几个属性,在应用过滤器时很有用。我的目标是应用一些过滤器,然后返回序列化的结果。结果应该包括客户的订单。

<标题>models.py h1> serializer.py h1> views.py h1> 是我目前得到的响应
[
{passport: 48, name: "Collins"},
{passport: 32, name: "Kate"}
]

这是我想要得到的响应

[
{passport: 48, name: "Collins", orders: {"1": "Hp EliteDisplay", "2": "Sony a7iii"}},
{passport: 32, name: "Kate" orders: {}}
]

:如何在同一响应中嵌入订单?

使用https://www.django-rest-framework.org/api-guide/fields/serializermethodfield

class CustomerSerializer(serializers.ModelSerializer):
passport = serializers.CharField(source='customer.passport_number')
customer_name = serializers.CharField(source='customer.name')
orders = serializers.SerializerMethodField()
def get_orders(self, mailing_list):
return OrderSerializer(queryset=mailing_list.customer.order_set.all(), many=True)
# I want to add the orders for each customer too
class Meta:
model = MailingList
fields = ['passport', 'customer_name', 'orders']

最新更新