У меня возникли проблемы с извлечением всех полей, которые мне нужны из сериализатора. Сценарий:Django Rest Framework - M2M через
У меня есть 2 стола: & Склад. Эти таблицы связаны через отношения M2M через таблицу под названием InventoryStatus. Мне нужно, чтобы получить информацию о товаре с вложенным полем информации склада + статусом из таблицы InventoryStatus. Проблема заключается в том, я не могу получить поле "статус" ....
Модель:
class InventoryItem(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
code = models.CharField(max_length=25, null=False, blank=True)
orgid = models.ForeignKey('glonass.Company', null=True, related_name='inventory_items_company')
title = models.CharField(max_length=150, null=False, blank=True)
inventory = models.ManyToManyField('CompanyBranch', through='InventoryStatus', related_name='branch_iventoryStatus')
class CompanyBranch(BaseDataDescTime, LocationInfo, PostInfo, PoboxInfo, ContactInfo):
id = models.UUIDField(primary_key=True, default=uuid.uuid4,
orgid = models.ForeignKey('glonass.Company', null=True, related_name='branches')
slug = models.SlugField(max_length=150, blank=True, null=False)
class InventoryStatus(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
inventoryitem = models.ForeignKey('InventoryItem', related_name='inventory_status_items', null=True)
orgid = models.ForeignKey('Company', null=True, related_name='inventory_status_company')
companybranch = models.ForeignKey('CompanyBranch', related_name='inventory_status_warehouses', null=True)
status = models.DecimalField(max_digits=9, decimal_places=2, null=True, blank=True, default=0)
Serializer:
class InventoryStatusSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = InventoryStatus
class CompanyBranchSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = CompanyBranch
class InventoryItemSerializer(serializers.HyperlinkedModelSerializer):
inventory = CompanyBranchSerializer(many=True)
class Meta:
model = InventoryItem
Выход Необходимый :
[
{
'id': 'xxxxxxxxxxxxx',
'title': 'Car',
'inventory': [
{
'id': 'yyyyyyyyyyy',
'title': 'warehouse 1',
'status': 50
},
{
'id': 'zzzzzzzzzzzz',
'title': 'warehouse 2',
'status': 10
}
]
}
]
И что вы получаете остроумие h ваши сериализаторы? Все без поля «status»? –
yes ... и когда я использую inventory = InventoryStatusSerializer (many = True) Я получил идентификатор CompanyBranch вместо Id из таблицы InventoryStatus ... даже если когда у меня есть представление InventoryStatus ... в представлении InventoryStatus я могу получить поля как из любой другой таблицы ... но я не могу вложить этот результат в результат Items –