我有下面的型号规格。MailingList是客户和电子邮件之间的参考表/模型。它还有几个其他属性,这些属性在应用过滤器时非常有用。我的目标是应用一些过滤器,然后返回序列化结果。结果应包括客户的订单
class Email(models.Model):
name = models.CharField(max_length=300, unique=True)
class Item(models.Model):
name = models.CharField(max_length=50)
class Customer(models.Model):
passport_number = models.CharField(max_length=20, unique=True)
name = models.CharField(max_length=20)
class Order(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
class MailingList(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
email = models.ForeignKey(Email, on_delete=models.CASCADE)
class CustomerSerializer(serializers.ModelSerializer):
passport = serializers.CharField(source='customer.passport_number')
customer_name = serializers.CharField(source='customer.name')
# I want to add the orders for each customer too
class Meta:
model = MailingList
fields = ['passport', 'customer_name']
class CustomerViewSet(viewsets.ViewSet):
def list(self, request):
queryset = MailingList.objects.filter(some_filters).prefetch_related('customer')
serializer = CustomerSerializer(queryset, many=True)
return serializer.data
这是我目前得到的答复
[
{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
相关问题 更多 >
编程相关推荐