Я узнал, что django 1.7 теперь поддерживает метод update_or_create() в наборе запросов. Но когда я пытаюсь, он не работает. Там нет ни одного объекта создается, когда я пытаюсь этот:update_or_create не обновлять/создавать объекты
models.py
class Model1(models.Model):
name = models.CharField(max_length=100)
status = models.CharField(max_length=100)
user = models.ForeignKey(User, null=True, blank=True)
class Model2(models.Model)
model = models.ForeignKey(Model1, null=True, blank=True)
field1 = models.CharField(max_length=100)
field2 = models.CharField(max_length=100)
user = models.ForeignKey(User, null=True, blank=True)
views.py
def ModelUpdate(request)
model1 = get_object_or_404(Model1, pk=request.POST['lid'])
model1.status =2
model1.save()
#based on the model1, we want to create or update model2
datadict ={'field1' : 1, 'field2':2,}
model2, created = Model2.objects.update_or_create(model=model1,
defaults=datadict)
if created:
print('model2 obj created') #for checking purpose
else:
print('model2 obj not created')
return render(request,'updated.html', {'update':'updated'})
Я могу видеть сообщение model2 OBJ создал но объект не был сохранен в базе данных. В чем может быть проблема?
UPDATE
Оказывается, это была моя ошибка. В Model2 я определил метод сохранения без возврата super(Model2, self).save(*args, **kwargs)
Вот почему он не сохранил объекты.
Как вы проверочных, что объект был создан? –
Из [документации] (https://docs.djangoproject.com/en/1.7/ref/models/querysets/#update-or-create) 'created' является логическим, определяющим, был ли создан новый объект. Кроме того, я просмотрел базу данных Model2, запись не была добавлена. –