请使用序列化程序检查此错误。 我有一个模特头像:
class Avatar(models.Model):
user = models.ForeignKey(User, related_name='avatar_user', null=True)
photoset = models.ForeignKey(PhotoSet, null=True, blank=True)
primary = models.BooleanField(default=True)
date_uploaded = models.DateTimeField(default=datetime.datetime.now)
image = models.ImageField(max_length=1024, upload_to=avatar_file_path)
我创建了一个带有头像的序列化器用户
from django.contrib.auth.models import User
class BasicAvatarSerializer(ModelSerializer):
class Meta:
model = Avatar
fields = [
'user',
'photoset',
'image',
]
class UserBasicSerializer(ModelSerializer):
avatar_set = BasicAvatarSerializer(many=True)
class Meta:
model = User
fields = [
'username',
'avatar_set',
'first_name',
'last_name',
]
但出现错误:
AttributeError at /api/v1/users/
Got AttributeError when attempting to get a value for field `avatar_set` on serializer `UserBasicSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `User` instance.
Original exception text was: 'User' object has no attribute 'avatar_set'.
最佳答案
我通过使用成功完全修复了它:
from django.contrib.auth.models import User
class BasicAvatarSerializer(ModelSerializer):
class Meta:
model = Avatar
fields = [
'user',
'photoset',
'image',
]
class UserBasicSerializer(ModelSerializer):
avatar_user = BasicAvatarSerializer(many=True)
class Meta:
model = User
fields = [
'username',
'avatar_user',
'first_name',
'last_name',
]
将 avatar_set 更改为 avatar_user,因为 User 中的lated_name='avatar_user'。谢谢@PRMoureu 和@rollinger!
关于python - 尝试获取 Django 中字段的值时出现 AttributeError - 外键关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46987063/