'长'对象没有属性' title'

时间:2016-01-03 02:01:41

标签: python json django django-rest-framework

我的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)

2 个答案:

答案 0 :(得分:0)

您想要使用

news = NewsSerializer(source='new')

假设它是模型上的FK。

new_id是FK值(即相关对象ID,而不是对象本身)。

答案 1 :(得分:0)

这是因为您在title类型文字中呼叫long,您可以将CommnetSerializer更改为:

news = NewsSerializer(read_only=True)

如果您的NewsNewsComments上的集合,则需要在many=True

中添加NewsSerializer

或者在NewsComments模型中创建方法并获取所需的news