Beim Erstellen einer verwandten Instanz kann einer FK-Beziehung keine gültige Instanz zugewiesen werden
JSRB
Ich habe die folgenden verwandten Modelle
class Period(models.Model):
"""
A table to store all periods, one period equals a specific month
"""
period = models.DateField()
def __str__(self):
return f'{self.period}'
class Payment(models.Model):
"""
A table to store all payments derived from an offer
"""
# Each monthly payment relates to an offer
offer = models.ForeignKey(Offer, on_delete=models.CASCADE)
month = models.ForeignKey(Period, on_delete=models.CASCADE)
amount = models.PositiveIntegerField()
...
for key, value in payments.items():
period = Period.objects.get_or_create(period=key)
print(period)
Payment.objects.create(
offer=offer_instance,
month=period,
amount=value
)
was hebt
ValueError: „(<Period: 2022-05-01>, False)“ kann nicht zugewiesen werden: „Payment.month“ muss eine „Period“-Instanz sein.
obwohl print(period)
zurück
(<Zeitraum: 01.05.2022>, falsch)
Was für mich sieht aus wie eine gültige Instanz?
Willem van Onsem
.get_or_create(…)
[Django-doc] gibt ein 2-Tupel mit dem abgerufenen/erstellten Element als erstem Element und als zweitem Element einen booleschen Wert zurück, der angibt, ob es erstellt wurde. Sie sollten also das 2-Tupel entpacken mit:
for key, value in payments.items():
period, __ = Period.objects.get_or_create(period=key)
Payment.objects.create(
offer=offer_instance,
month=period,
amount=value
)