Django - Ошибка поля "Один к одному" не сохраняет данные без ошибки
В настоящее время я сталкиваюсь с проблемой с полем один-к-одному в Django, где данные не сохранялись после присвоения значения, а вызов сохранения проходит успешно без каких-либо ошибок время от времени. Я бы сказал, что 60% не сохраняется, а 40% работает. Это происходит только на нашем рабочем сервере, где есть миллионы строк для Model1 и Model2 и идет очень много процессов.
# models.py
class Model1(models.Model):
field1 = models.OneToOneField(Model2, on_delete=models.SET_NULL, null=True, blank=True, default=None)
# Some other fields here
def link_item(self, model2_id):
field1 = Model2.objects.get(id=model2_id)
self.field1 = field1
self.save()
# views.py
import module
def my_view(requests):
model1_obj = Model1.objects.get(id=model1_id)
result = module.another_function(model1_obj, request_data)
return result
# module.py
def another_function(model1_obj, request_data):
if request_data['status'] == 'complete':
model1_obj.link_item(request_data['model2_id'])
Я попробовал записать в журнал значения self.field1 после вызова self.save и вижу, что объект model2 отображается.
Возможная причина, почему это иногда происходит?