评论的模型是这么定义的
class Comment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,default=1,on_delete=models.CASCADE)
content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type','object_id')
parent = models.ForeignKey('self',null=True,blank=True,on_delete=models.CASCADE)
content = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
objects = CommentManager()
这里面有个content_object字段是个通用外键,我也是个新手刚刚学习,不知道这个外键的作用是什么的,然后我在用户详情里面顺带查了一下这个相对应的评论
class UserDetailSerializer(serializers.ModelSerializer):
userName = SerializerMethodField()
detail = SerializerMethodField()
comments = SerializerMethodField()
class Meta:
model = User
fields = (
'userName',
'sex',
'age',
'detail',
'comments'
)
def get_userName(self,obj):
return obj.name
def get_detail(self,obj):
try:
detail = obj.detail != 'False' if True else None
except:
detail = None
return detail
def get_comments(self,obj):
content_type = obj.get_content_type
id = obj.id
comments_queryset = Comment.objects.filter_by_instance(obj)
comments = CommentSerializer(comments_queryset,many=True).data
return comments
最后我在这个序列化评论模型的地方加上了content_object这个字段就会报错
class CommentSerializer(serializers.ModelSerializer):
reply_count = SerializerMethodField()
class Meta:
model = Comment
fields = (
'id',
'user',
'content_type',
'object_id',
'parent',
'content',
'reply_count'
)
def get_reply_count(self,obj):
if obj.is_parent:
return obj.children().count()
return 0
如果去掉这个content_object字段就不会报错,加上就会报一个Object of type 'User' is not JSON serializable
这个问题怎么解决啊,最后查出来的结果就是content_object这个字段是一个User模型。。。。。这咋回事。。。。谁能救我