我的json数组在它下面是一个对象:
{
"comment_id": 10159,
"new_id": 25208,
"user_id": 1,
"comment": "test",
"liked": 0,
"create_date": 1451268678,
"is_mobile_user": 0
}
我需要将相关的新闻对象获取到new_id并将相关的用户对象获取到user_id。我以前做过,但现在没有用。我改变了我的序列化器:
class CommentSerializer(serializers.ModelSerializer):
news = NewsSerializer(source='new_id')
user = UserSerializer(source='user_id')
class Meta:
model = NewsComments
fields = ('comment_id','news','user','comment','liked','create_date','is_mobile_user')
然后我得到了这个例外:
/ user_comments / 1
的AttributeError尝试获取字段
title
的值时出现AttributeError 序列化器NewsSerializer
。序列化程序字段可能已命名 错误且不匹配long
实例上的任何属性或键。
原始例外文字是:' long'对象没有属性' title'。
我试图搜索。他们说使用" many = True"更改子序列化器。但这使我对长对象的错误不可迭代。我怎样才能解决我的问题?
P.S。那是NewsSerializer:
class NewsSerializer(serializers.ModelSerializer):
class Meta:
model = News
fields = ('new_id','title','short_content','content','image','create_date','type')
我的新闻模式:
class NewsSerializer(serializers.ModelSerializer):
class Meta:
model = News
fields = ('new_id','title','short_content','content','image','create_date','type')
比我的观点:
@api_view(['GET'])
def user_comments(request,pk):
comments = NewsComments.objects.filter(user_id=pk)
serializer = CommentSerializer(comments, many=True)
return Response(serializer.data)
答案 0 :(得分:0)
您想要使用
news = NewsSerializer(source='new')
假设它是模型上的FK。
new_id
是FK值(即相关对象ID,而不是对象本身)。
答案 1 :(得分:0)
这是因为您在title
类型文字中呼叫long
,您可以将CommnetSerializer
更改为:
news = NewsSerializer(read_only=True)
如果您的News
是NewsComments
上的集合,则需要在many=True
NewsSerializer
或者在NewsComments
模型中创建方法并获取所需的news