Невозможно присвоить действительный экземпляр отношению FK при создании связанного экземпляра
У меня есть следующие родственные модели
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
)
что повышает
ValueError: Невозможно присвоить "(<Период: 2022-05-01>, False)": "Payment.month" должен быть экземпляром "Period".
.
хотя print(period) возвращается
(<Период: 2022-05-01>, Ложь)
что для меня выглядит как действительный экземпляр?
.get_or_create(…) [Django-doc] возвращает кортеж из двух элементов, первым из которых является элемент, который извлекается/создается, а вторым - булево число, указывающее, был ли он создан. Таким образом, вы должны распаковать этот кортеж следующим образом:
for key, value in payments.items():
period, __ = Period.objects.get_or_create(period=key)
Payment.objects.create(
offer=offer_instance,
month=period,
amount=value
)