gpt4 book ai didi

django - 使用嵌套关系时出现 AttributeError

转载 作者:行者123 更新时间:2023-12-04 21:18:11 27 4
gpt4 key购买 nike

当我尝试在两个序列化程序之间创建嵌套关系时出现 AttributeError。奇怪的是,我正在做与另一个 API 完全相同的事情,但这次我没有让它工作。这是代码:

class UserSerializer(serializers.ModelSerializer):

class Meta:
model = get_user_model()
fields = ('id', 'last_login','username', 'created')

class NotificationSerializer(serializers.ModelSerializer):
user_id = UserSerializer()

class Meta:
model = Notification
fields = ('id', 'user_id', 'type', 'parent_id', 'created', 'modified', 'seen')

以及相关模型:
class Notification(models.Model):
user = models.ForeignKey(User)
type = models.CharField(max_length=255)
parent_id = models.IntegerField()
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
seen = models.SmallIntegerField(default=0)

def __unicode__(self):
return self.type

class Meta:
db_table = 'notification'

class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(max_length=255, unique=True)
id = models.IntegerField(primary_key=True)
created = models.DateTimeField(auto_now=True)
tag = models.ManyToManyField(Tag)

USERNAME_FIELD = 'username'

objects = MyUserManager()

class Meta:
db_table = 'user'

错误:
Exception Type: AttributeError
Exception Value:
'long' object has no attribute 'id'
Exception Location: /lib/python2.7/site-packages/rest_framework/fields.py in get_component, line 55

谁能帮我解决这个错误?正常的主键关系有效,但我绝对希望获得嵌套关系。

最佳答案

由于您的 Notification模型有一个名为 user 的字段, 我觉得你应该用它来代替 user_id :

class NotificationSerializer(serializers.ModelSerializer):
user = UserSerializer()

class Meta:
model = Notification
fields = ('id', 'user', 'type', 'parent_id', 'created', 'modified', 'seen')

另一个小注意事项是您真的想创建:
id = models.IntegerField(primary_key=True) 

在您的自定义 User模型?默认情况下是 User模型已经有一个名为 id 的字段这就是PK。

关于django - 使用嵌套关系时出现 AttributeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com