Table1
где я получаю данные из сценария управления, который вызывает определенный API.Table2
также получает данные от API.Сценарий xid
и kid
одинаков, поэтому я реализовал отношение OneToOne
, чтобы я мог легко получить связанный элемент из table1
в контексте table2
.Table1
должен быть заполнен для заполнения table1
, так как только тогда может быть выполнено присвоение экземпляра table2
.5687
Уже существует в таблице1, но все равно я получаю сообщение об ошибке:
ValueError: Cannot assign "5687": "Table2.kid" must be a "Table1" instance.
Models.py
class Table1(models.Model):
xid = models.IntegerField(primary_key=True)
amount = models.IntegerField()
class Table2(models.Model):
kid = models.OneToOneField(Table1,primary_key=True, on_delete=models.CASCADE)
vid = models.IntegerField(null=True, blank=True)
g_amount = models.IntegerField()
Это мой код сценария, который одинаков для обеих команд управления, которые получают мне данные.
Management/commands/script.py
""" API CODE """
data = {
'kid': kid,
'vid': vid,
'g_amount': g_amount
}
if Table2.objects.filter(vid=xid).exists() or Table1.objects.filter(xid=kid).exists() is False:
continue
else:
# print(data)
instance = Table2(**dataff)
instance.save()
Или должен быть способ, который мне не нужениметь OneToOne
отношения.Используя ORM Джанго, можно построить запрос, который объединит экземпляр из этих двух таблиц в одну и поместит его в виртуальную таблицу, чтобы я не потерял возможности ORM.