Я пытаюсь обновить поля модели, используя update_or_create, который получает данные из API.Проблема заключается в том, что все поля заполняются только двумя последними значениями из i ['Concessional] и i [' Noncessional ']
Я использую внешний API для обновления следующей модели:
class Contributions(models.Model):
trustee = models.ForeignKey(Trustee, on_delete = models.CASCADE)
concessional_caps = models.FloatField(null = True, blank = True)
noncessional_caps = models.FloatField(null = True, blank = True)
concessional_contributions_to_this_fund = models.FloatField(null = True, blank = True)
non_concessional_contributions_to_this_fund = models.FloatField(null = True, blank = True)
concessional_contributions_to_other_fund = models.FloatField(null = True, blank = True)
non_concessional_contributions_to_other_fund = models.FloatField(null = True, blank = True)
concessional_contributions_as_allocated =models.FloatField(null = True, blank = True)
non_concessional_contributions_as_allocated = models.FloatField(null = True, blank = True)
concessional_amounts_above_caps = models.FloatField(null = True, blank = True)
non_concessional_amounts_above_caps = models.FloatField(null = True, blank = True)
concessional_available_total = models.FloatField(null = True, blank = True)
non_concessional_available_total = models.FloatField(null = True, blank = True)
Используя следующий код:
for i in range(len(contribution_caps_data['Data']['Members'])):
Contributions.objects.update_or_create(trustee = Trustee.objects.get(trustee_name = contribution_caps_data['Data']['Members'][i]["Name"]))
for j in contribution_caps_data['Data']['Members'][i]['YearBreakdown']['ContributionDetails']:
Contributions.objects.update_or_create(trustee = Trustee.objects.get(trustee_name = contribution_caps_data['Data']['Members'][i]["Name"]),
defaults = {
'concessional_caps': j['Concessional'],
'noncessional_caps': j['NonConcessional'],
'concessional_contributions_to_this_fund': j['Concessional'],
'non_concessional_contributions_to_this_fund': j['NonConcessional'],
'concessional_contributions_to_other_fund': j['Concessional'],
'non_concessional_contributions_as_allocated': j['NonConcessional'],
'concessional_contributions_as_allocated': j['Concessional'],
'non_concessional_amounts_above_caps': j['NonConcessional'],
'concessional_amounts_above_caps': j['Concessional'],
'non_concessional_amounts_above_caps': j['NonConcessional'],
'concessional_available_total': j['Concessional'],
'non_concessional_available_total': j['NonConcessional']
}
)
Я пытаюсь создать новую запись вклада, первый цикл для получения имен (внешний ключ), а второй цикл дляна самом деле получить значения взносов
Как бы вы порекомендовали обойти это.Должен ли я предварительно обработать в пригодную для использования форму (возможно, словарь), а затем обновить модель.Простите, что это тривиальный вопрос, но я относительно новичок в Python и Django, но не могу найти решение.