任何人都可以解释这个问题。
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')
答案 0 :(得分:1)
您将get_uri
方法添加到了元类中,而不是序列化器类中。
只需删除一个压痕级别,就可以了。