python - 尝试获取 Django 中字段的值时出现 AttributeError - 外键关系

标签 python django django-rest-framework

请使用序列化程序检查此错误。 我有一个模特头像:

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'.

view error by photo

最佳答案

我通过使用成功完全修复了它:

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/

相关文章:

python - 寻找 3D 曲面的开口

python - 从 ubuntu 上的 google app engine 开始

django - 在 Django Rest 框架渲染器类中获取响应状态

python - Django Rest 框架 token 认证

python - 如何更改 Django 管理页面的名称?

python - 有什么方法可以在更改代码时不重新启动而使用 django shell

python - matplotlib - 使用线条剪辑图像

Django 管理站点 : prevent fields from being edited?

python - 在Django中对要请求的图片进行排队

python - Django 'WSGIRequest' 对象没有属性 'Post'