У меня есть две модели со многими отношениями.Как отобразить вложенную модель как список ее первого поля
class MyModel(models.Model):
value = models.CharField(max_length=255)
tests = models.ManyToManyField(to='Test', null=True, related_name='models')
class Test(models.Model):
name = models.CharField(max_length=255)
То, что я пытаюсь сделать это, чтобы показать «» MyModel как список его поле «значение». Вот мои сериализаторы (довольно просто, а):
class MyModelSerializer(serializers.Serializer):
value = serializers.CharField()
class Meta:
model = models.MyModel
fields = ('value',)
class TestSerializer(serializers.ModelSerializer):
models = MyModelSerializer(many=True, read_only=True)
class Meta:
model = models.Test
fields = ('name','models')
До сих пор я получаю список объектов:
"name": "",
"models": [
{
"value": "question"
}
]
Есть ли способ, чтобы отобразить «значения» полей в виде списка строк не список объектов?
Важно, я бы хотел избежать методов сериализации или любых методов в моделях. Есть ли встроенный способ?
ОБНОВЛЕНО Если кто-то заинтересован в решении я в конечном итоге переопределение «метод to_representation в MyModelSerializer
и получил желаемый результат. Вот сериализатору:
class MyModelSerializer(serializers.Serializer):
class Meta:
model = models.MyModel
def to_representation(self, instance):
return instance.value
Я хотел бы избежать любых методов в сериализаторе и модели. Есть ли встроенный метод, например ListField для многих-ко-многим? –
[values_list] (https://docs.djangoproject.com/en/1.10/ref/models/querysets/#values-list) является встроенным способом. Это метод, используемый в QuerySet, а не в экземпляре модели. Если это не соответствует вашим критериям, я не думаю, что есть какой-либо другой «встроенный» способ достижения этого. – Neelik