Я столкнулся с проблемой при создании объектов django. У меня есть две модели
class League(models.Model):
league_id = models.IntegerField(primary_key=True)
league_name = models.CharField(max_length=20)
league_logo = models.URLField(null = True)
league_flag = models.URLField(null = True)
standings = models.IntegerField(null=True)
is_current = models.IntegerField(null=True)
class Fixture(models.Model):
fixture = models.IntegerField (primary_key=True)
league_id = models.ForeignKey('League',null=True, on_delete=models.SET_NULL)
event_date = models.DateTimeField(null=True)
event_timestamp = models.DateTimeField(null=True)
Когда я пытаюсь создать объект из моей модели прибора, и в это время у меня нет данных в таблице лиги. Я получаю сообщение об ошибке:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/data/data/com.termux/files/home/storage/predictions/forecast/odds.py", line 53, in <module>
fixt = Fixture.objects.create_or_update(fixture_id = fixture_id,league_id_id = league_id,event_date = event_date,)
AttributeError: 'Manager' object has no attribute 'create_or_update'
>>> import odds
/data/data/com.termux/files/home/storage/predictions/forecast
Traceback (most recent call last):
File "/data/data/com.termux/files/home/storage/predictions/env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 240, in _commit
self._commit()
File "/data/data/com.termux/files/home/storage/predictions/env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 240, in _commit
return self.connection.commit()
File "/data/data/com.termux/files/home/storage/predictions/env/lib/python3.7/site-packages/django/db/utils.py", line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/data/data/com.termux/files/home/storage/predictions/env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 240, in _commit
return self.connection.commit()
django.db.utils.IntegrityError: insert or update on table "dataflow_fixture" violates foreign key constraint "dataflow_fixture_league_id_id_674984dc_fk_dataflow_"
DETAIL: Key (league_id_id)=(780) is not present in table "dataflow_league".
Как я понимаю, эта ошибка возникает потому, что во время создания объекта фикстуры и процесса создания поля досягаемости league_id и его ссылки на поле league_id в таблице Лиги, которая не содержит никаких данных вэтот момент. Я думал, что для решения этой проблемы я могу изменить порядок создания объектов и сначала создать объекты лиги, а затем создать объекты объектов. Но у моей модели лиги также есть поле внешнего ключа, которое ссылается на объекты, которых не существует. У django есть какой-нибудь способ обойти подобные неприятности ???