Джанго- поле выглядит как ноль - PullRequest
0 голосов
/ 31 мая 2019

Я хочу показать имя поля, а не его идентификатор, поэтому я попробовал несколько разных методов, но у меня ничего не получалось.Я не мог понять, почему или найти подходящее решение для этого, так что вот так: в основном, мои представления возвращают нулевое поле, хотя на самом деле оно не является нулевым.Код ниже.

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
}

Заранее спасибо!

1 Ответ

1 голос
/ 31 мая 2019

Ну, добавление many = True к сериализатору решило мою проблему ... тупой

class ComercialListSerializer(serializers.ModelSerializer):
    tags = TagListSerializer(many=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...