Viene visualizzato un errore AttributeError quando si tenta di creare una relazione nidificata tra due serializzatori. La cosa strana è che sto facendo esattamente la stessa cosa con un'altra API, ma questa volta non riesco a farlo funzionare. Ecco il codice:AttributeError quando si utilizzano relazioni nidificate
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')
E i modelli associati:
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'errore:
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
Qualcuno mi può aiutare con questo errore? Una normale relazione con la chiave primaria funziona, ma mi piacerebbe sicuramente ottenere una relazione nidificata.
Grazie! Questo era il trucco. Perché un ID personalizzato? Perché quello standard genera un campo auto incrementale e non voglio un ID auto incrementale. Ho impostato manualmente l'ID utente (da un'altra tabella dei profili esterni). Ecco perchè ;) – Leander