Как добавить первичный ключ из отношения M2M в мой сериализатор?
Примеры, которые я видел, работают только при сквозной пользовательской модели не установлено.
модели:
class Inventory(models.Model):
quantity = models.IntegerField()
...
class Order(models.Model):
order_items = models.ManyToManyField(Inventory, through='myapp.OrderItem')
...
class OrderItem(models.Model):
order = models.ForeignKey(Order)
inventory = models.ForeignKey(Inventory)
sell_price = models.IntegerField()
quantity = models.IntegerField()
сериализаторы:
class InventorySerializer(serializers.ModelSerializer):
class Meta:
model = Inventory
fields = ('id', )
class OrderItemSerializer(serializers.ModelSerializer):
inventory_id = serializers.PrimaryKeyRelatedField(source='inventory.id', read_only=True)
class Meta:
model = OrderItem
fields = ('order_id', 'inventory_id', 'sell_price', 'quantity',)
class OrderSerializer(serializers.ModelSerializer):
order_items = OrderItemSerializer(many=True)
inventory_id = serializers.PrimaryKeyRelatedField(source='inventory.id', read_only=True)
class Meta:
model = Order
fields = '__all__'
Ожидаемые результаты:
[
{
"id": 1,
"order_items": [
{
"inventory_id": 1,
"sell_price": "2.00",
"quantity": 12
},
{
"inventory_id": 2,
"sell_price": "9.50",
"quantity": 6
},
{
"inventory_id": 3,
"sell_price": "77.77",
"quantity": 1
}
... <other fields>
],
Я пробовал различные комбинации имена полей в мета, добавление InventorySerializer
непосредственно в модель и т. д. c. но я не могу заставить его работать. Чего мне не хватает?