Tôi nhận được AttributeError khi cố tạo mối quan hệ lồng nhau giữa hai serializers. Điều kỳ lạ là tôi đang làm chính xác điều tương tự như với một API khác, nhưng lần này tôi không làm cho nó hoạt động. Đây là mã:Thuộc tínhError khi sử dụng quan hệ lồng nhau
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')
Và các mô hình liên quan:
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'
Lỗi:
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
bất cứ ai có thể giúp tôi với lỗi này? Một mối quan hệ khóa chính bình thường hoạt động, nhưng tôi chắc chắn muốn có được một mối quan hệ lồng nhau.
Cảm ơn! Đó là mẹo. Tại sao id tùy chỉnh? Bởi vì tiêu chuẩn tạo ra một trường tự động gia tăng và tôi không muốn một id tự động gia tăng. Tôi đặt ID người dùng theo cách thủ công (từ một bảng hồ sơ bên ngoài khác). Đó là lý do tại sao;) – Leander