DRF: AttributeError: у объекта 'BlogSerializers' нет атрибута 'get_uri' - PullRequest
0 голосов
/ 15 ноября 2018

Может кто-нибудь объяснить о проблеме.

mobel.py

class Blog(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=120, null=True, blank=True)
    content = models.TextField(null=True, blank=True)
    timestamp = models.DateTimeField(auto_now_add=True)

    def get_api_url(self):
        return api_reverse("post-rud", kwargs={"pk": self.pk})

и мой файл сериализатора - serializer.py

class BlogSerializers(serializers.ModelSerializer):
    uri = serializers.SerializerMethodField(read_only=True)

    class Meta:
        model = Blog
        fields = [
            'uri',
            'pk',
            'user',
            'title',
            'content',
            'timestamp',
        ]
        read_only_fields = ['pk', 'user']

        def get_uri(self, obj):
            return obj.get_api_url()

ошибка, показывающая

AttributeError в / api / blog / post / list / объекту 'BlogSerializers' не имеет атрибута 'get_uri'

, если я использую эту строку, проблема решена.Но я хочу понять об этой ошибке.

class BlogSerializers(serializers.ModelSerializer):
    # uri = serializers.CharField(read_only=True, source='get_api_url')

1 Ответ

0 голосов
/ 15 ноября 2018

Вы добавили метод get_uri в мета-класс вместо вашего класса сериализатора.Просто удалите один уровень отступа, и все готово.

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