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

时间:2018-11-15 19:52:36

标签: python django-rest-framework

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

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

显示错误

  / api / blog / post / list /'BlogSerializers'对象中的

AttributeError没有   属性“ get_uri”

如果我在此行下使用,问题将得到解决。但是我想了解这个错误。

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

1 个答案:

答案 0 :(得分:1)

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