django остальные рамки настраивают сериализатор - PullRequest
0 голосов
/ 04 декабря 2018

Моими моделями являются Закупка, Предмет, Группа товаров, Магазин

Это соответствующие поля моделей:

class Store(models.Model):
    name = models.CharField(max_length=100)

class ItemGroup(models.Model):
    name = models.CharField(max_length=100)
    store = models.ForeignKey(Store)

class Item(models.Model):
    name = models.CharField(max_length=100)
    group = models.ForeignKey(ItemGroup)

class Purchase(models.Model):
    item = models.ForeignKey(Item)
    date = models.DateTimeField()

Я хочу написать сериализатор для Покупки.Для каждой покупки я хочу следующий вывод:

{"item": "item_name", "store": "store_name"}

(также есть некоторые дополнительные поля Purcahse, но их легко получить).

Я пытался следовать отношениямиспользуя стиль двойного подчеркивания django __, но это не работает:

class PurchaseSerializer(serializers.ModelSerializer):
    class Meta:
        model = Purchase
        fields = ('item', 'item__group__store')

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Использование source аргумент

class PurchaseSerializer(serializers.ModelSerializer):
    item = serializers.CharField(source='item.name')
    store = serializers.CharField(source="item.group.store.name")

    class Meta:
        model = Purchase
        fields = ('item', 'store')
0 голосов
/ 04 декабря 2018
class PurchaseSerializer(serializers.ModelSerializer):
    store = serializers.CharField(source="item.group.store.name")
    class Meta:
        model = Purchase
        fields = ('item', 'store')

Не забудьте предварительно выбрать хранилище для оптимизации запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...