DRF:AttributeError:'BlogSerializers'对象没有属性'get_uri'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DRF:AttributeError:'BlogSerializers'对象没有属性'get_uri'相关的知识,希望对你有一定的参考价值。

任何人都可以解释这个问题。

模板恶劣.朋友

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()

错误显示

/ api / blog / post / list /'BlogSerializers'对象中的AttributeError没有属性'get_uri'

如果我在这条线下使用,问题就解决了。但我想了解这个错误。

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

您将get_uri方法添加到元类,而不是序列化器类。只需删除一个缩进级别就可以了。

以上是关于DRF:AttributeError:'BlogSerializers'对象没有属性'get_uri'的主要内容,如果未能解决你的问题,请参考以下文章

DRF 序列化程序错误:AttributeError:“FeedPostSerializer”对象没有属性“auth_user”

python提示AttributeError: 'NoneType' object has no attribute 'append'

python提示AttributeError: 'NoneType' object has no attribute 'append'转发

drf django rest framework 尝试获取序列化程序“软件序列化程序”上字段“image_id”的值时出现 AttributeError(状态码 406)

Python 脚本报错AttributeError: 'module 'yyy' has no attribute 'xxx'的解决方法

DRF4级联与外键字段