【发布时间】:2020-08-21 21:05:32
【问题描述】:
我创建了一个博客,人们可以在其中发帖、评论和喜欢发帖。当我发布新帖子时,在 /api/posts/ 'NoneType' object has no attribute 'user' 处出现错误 AttributeError ,在第 20 行 get_user_has_voted 中的 serializers.py 处发生错误。
即使出现错误,我也可以发布数据并且所有其他功能都可以正常工作。
为什么会发生错误?如何调试?
序列化器.PY
class PostSerializers(serializers.ModelSerializer):
comments = serializers.HyperlinkedRelatedField(many=True,read_only=True,view_name = 'comment_details')
likes_count = serializers.SerializerMethodField()
user_has_voted = serializers.SerializerMethodField()
class Meta:
model = Post
fields = '__all__'
#exclude=('voters',)
def get_likes_count(self, instance):
return instance.voters.count()
def get_user_has_voted(self, instance):
request = self.context.get("request")
return instance.voters.filter(pk=request.user.pk).exists() # line 20
模型.PY
class Post(models.Model):
title = models.CharField(max_length=60)
body = models.CharField(max_length=60)
file = models.FileField(null=True,blank=True)
voters = models.ManyToManyField(settings.AUTH_USER_MODEL,
related_name="votes",null=True,blank=True)
堆栈溢出中有重复的问题,但场景不同,作为初学者我无法理解。
【问题讨论】:
-
因为
context没有request。 -
你可以用pdb或者pudb调试它。
pip install pudb然后将这一行放在任何你想休息的地方:import pudb; pudb.set_trace() -
@WillemVanOnsem 我可以忽略这个错误吗?
-
@RossRogers 谢谢我会试试的
标签: python django django-rest-framework