j'ai les modèles suivants django:requête Django ne sélectionne pas related_name
class UserPayments(models.Model):
_DATABASE = "payments"
id = models.AutoField(primary_key=True)
paym_psp_id = models.ForeignKey(ConfigPSP, null=True, on_delete=models.SET_NULL)
[...]
class InvoiceNumbers(models.Model):
_DATABASE = "payments"
id = models.AutoField(primary_key=True)
inv_date = models.DateField(null=False)
inv_payment_id = models.ForeignKey(UserPayments, null=True, on_delete=models.DO_NOTHING, related_name='paym_invoice_meta')
[...]
Comme vous pouvez le voir, ils sont liés à la définition de « related_name » dans le modèle InvoiceNumbers.
Quand je fais pas une requête dans django comme:
payments = UserPayments.objects.filter(paym_user_id=user_id)
Et itérer cette requête dans un modèle
{% for inv in payments %}
{% for meta in inv.paym_invoice_meta %}
{{ meta.inv_invoice_hash }}
{% endfor %}
{% endfor %}
Je reçois l'erreur de modèle qui pay_invoice_meta n'est pas itérable. Avec une instruction de sélection manuelle incluant la jointure externe gauche, j'obtiens tous les résultats.
Qu'est-ce qui me manque ici? Comment puis-je forcer la requête à sélectionner les valeurs de InvoiceNumbers?
{% remplacer pour la méta dans inv.paym_invoice_meta.all%} –