簡體   English   中英

序列化程序 - Django REST 框架(AttributeError:在嘗試獲取序列化程序上的字段 `user` 的值時出現 AttributeError)

[英]Serializers - Django REST framework (AttributeError: Got AttributeError when attempting to get a value for field `user` on serializer)

AttributeError:在嘗試獲取序列化程序UserKeywordSerializer上的字段user的值時出現UserKeywordSerializer 序列化器字段可能命名不正確,並且與QuerySet實例上的任何屬性或鍵都不匹配。

模型.py

class Keyword(models.Model):
    name=models.CharField(max_length=500,unique=True)
    image = models.ImageField(upload_to='keywords/', blank=True, null=True)
    mood=models.ManyToManyField(Mood,blank=True)
    def __str__(self):
        return str(self.name)

class UserKeyword(models.Model):
    keywords=models.ManyToManyField(Keyword)
    count=models.IntegerField(blank=True,null=True,default=0)
    user=models.ForeignKey(User,on_delete=models.CASCADE)
    def __str__(self):
        return str(self.id)

序列化程序.py

class KeywordsSerializer(serializers.ModelSerializer):
    class Meta:
        model = Keyword
        fields ='__all__'

class UserKeywordSerializer(serializers.ModelSerializer):
    keywords = KeywordsSerializer( read_only=True,many=True)

    class Meta:
        model = UserKeyword
        fields = '__all__'

視圖.py

top_keywords=UserKeyword.objects.filter(user_id=request.user.id).select_related().order_by('-count')
user_serializer=UserKeywordSerializer(top_keywords).data
print(user_serializer)
top_keywords=UserKeyword.objects.filter(user_id=request.user.id).select_related().order_by('-count')

user_serializer=UserKeywordSerializer(top_keywords, many=True).data

top_keywords是查詢集,因此您應該將many=True添加到序列化程序,請參閱處理多個對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM