Vous n'êtes pas identifié(e).
Bonjour à tous,
Je suis assez perplexe devant le comportement de Django quand on essaye d'accéder à l'ID d'une instance d'un modèle. Je m'explique, par exemple en console si je declare:
instance = MonModel.objects.get(id=1) #même résultat avec la fonction filter()
instance.id
J'obtiens bien "1", même si la fonction __str__ du modèle renvoi self.name
Par contre dans mon code, j'essaye de récuperer une liste d'ID comme suit:
for i in range(after):
id_list.append(ArticleSW.objects.get(id=new[i].id))
Je me retrouve avec une liste de ce que renvoi __str__
Comment accéder à ces ID directement ? Et pourquoi ce comportement ?
Merci par avance pour vos réponses !
Hors ligne
Pas de soucis, tu n'es pas loin du tout.
Ce que tu vois est une évaluation d'une liste d'articlesw. En revanche, pour la représenter, les instances sont transformées en chaine et donc tu vois le résultat du __str__.
Du coup, ce que tu veux ajouter est l'ID de l'article et non l'article lui-même, soit:
id_list.append(ArticleSW.objects.get(id=new[i].id).id)
Ceci dit, l'intérêt d'aller chercher l'article alors que tu ne prends que l'id est limité, et donc tu peux aussi faire:
id_list.append(new[i].id)
Hors ligne
Hum j'aurais du me douter que le problème venait de mon code , merci pour ta réponse et effectivement la deuxième solution est plus optimisée.
Hors ligne