我發現,Django 1.7現在支持queryset中的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)
這就是爲什麼它沒有保存對象。
你是如何驗證創建對象? – 2014-09-26 09:31:54
從他們的[文檔](https://docs.djangoproject.com/en/1.7/ref/models/querysets/#update-or-create)'created'是一個布爾值,指定是否創建了一個新對象。另外,我查看了Model2的數據庫,沒有添加記錄。 – 2014-09-26 12:21:16