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()
を置き換えることによって、周りに働いていますそして、あなたは後方参照フィールドorder_items
ないcarts
を持ってOrder
方法で私はモデルでは
def get_carts(self, order: Order):
qs = order.order_items.all()
serializer = MailAPIOrderItemSerializer(qs, many=True)
return serializer.data
OKです。できます。しかし、私は 'カートは' order_itemsではないことを望んでいます。 'cart_'に' order_items'の別名を付けるにはどうすればいいですか? – 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