Я хочу показать имя поля, а не его идентификатор, поэтому я попробовал несколько разных методов, но у меня ничего не получалось.Я не мог понять, почему или найти подходящее решение для этого, так что вот так: в основном, мои представления возвращают нулевое поле, хотя на самом деле оно не является нулевым.Код ниже.
tags = TagListSerializer () # Возвращает нулевое
tags = serializers.Field (source = 'tags.name') # Возвращает нулевое
tags = TagListSerializer # Ничего не меняет
Коммерческий наследуется от Проект , который является абстрактным:
class Comercial(Project):
name = models.CharField()
Проект является абстрактным:
class Project(models.Model):
tags = models.ManyToManyField(Tag, blank=True, editable=True)
Тег Модель:
class Tag(models.Model):
name = models.CharField(null=False)
Коммерческий вид , который ищет по тегу:
class ListComercialAPIView(ListAPIView):
serializer_class = ComercialListSerializer
pagination_class = StandardResultsSetPagination
def get_queryset(self):
tag = self.request.GET.get('tag')
if(tag!=None):
return Comercial.objects.filter(tags__name=tag)
else:
return Comercial.objects.all()
Тег Сериализатор :
class TagListSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
fields = ('__all__')
И, наконец, ComercialSerlialzier :
class ComercialListSerializer(serializers.ModelSerializer):
tags = TagListSerializer()
class Meta:
model = Comercial
fields = ('name', 'tags')
При перечислении объекта Comercial я ожидал что-то вроде этого:
{
"name": "Example Comercial Name"
"tags": {
"name":"Example Tag Name"}
}
Но все, что я получаю, это:
{
"name": "Example Comercial Name"
"tags": {
"name": null
}
Заранее спасибо!