0
在Django REST中使用嵌套的序列化程序似乎很簡單。
但我找不到任何錯誤的,我code.carts不露面
我曾跟隨http://www.django-rest-framework.org/api-guide/relations/#nested-relationships
只有一點不同的是,我用JSONField
。
這不應該是一個問題。嵌套的Django REST
class MailAPIOrderItemSerializer(serializers.ModelSerializer):
product = serializers.SerializerMethodField()
category = serializers.SerializerMethodField()
variant = serializers.SerializerMethodField()
class Meta:
model = OrderItem
fields = ('category', 'product', 'variant')
def get_variant(self, obj: OrderItem):
return obj.product.get('level_two')
def get_category(self, obj: OrderItem):
return obj.product.get('service_name')
def get_product(self, obj: OrderItem):
return obj.product.get('product_name')
class MailAPIOrderSerializer(serializers.ModelSerializer):
...
carts = MailAPIOrderItemSerializer(many=True, read_only=True)
class Meta:
model = Order
fields = (
...
'carts'
)
def get_staff_name(self, order: Order):
return order.staff.full_name
class OrderItem(AbstractSoftModelController):
order = models.ForeignKey(Order, related_name='order_items', verbose_name=_('Order'))
product = JSONField(verbose_name=_('Product'))
我時序解決方案:
眼下。我的工作圍繞通過更換
carts = serializers.SerializerMethodField()
而在方法我用
def get_carts(self, order: Order):
qs = order.order_items.all()
serializer = MailAPIOrderItemSerializer(qs, many=True)
return serializer.data
好的。有用。不過,我希望'carts'不是'order_items'。我怎樣才能把'order_items'變成'carts'? – Sarit
@Sarit嘗試指定'source'參數:'carts = MailAPIOrderItemSerializer(source ='order_items',many = True,read_only = True)'。在此處查看詳情:http://www.django-rest-framework.org/api-guide/fields/#source – neverwalkaloner
是的。在閱讀https://stackoverflow.com/questions/22958058/how-to-change-field-name-in-django-rest-framework後,我即將嘗試'source'。非常感謝你。 – Sarit