2012-04-21 64 views
0

我的代码:什么时候.save()创建一个对象?

name = MakesiteNameForm(datdict) 
if name.is_valid: 
    name.save() 

datsite = Makesite.objects.get(sitename=request.POST['sitename']) 
datsite.ref_id.add(RefID.objects.create(url=request.POST['url'],description=request.POST['description'])) 
datsite.save() 

所以我有什么代码,我要用来创建和保存一些多对多的项目该位,但是当我尝试使用这种方法是说,Makesite matching query does not exist。我认为这意味着它没有保存,但后来我打电话给site = Makesite.objects.all(),我可以清楚地看到request.POST['sitename']坐在querydict内的价值。那么无论如何要更好地查询这个?或者有什么关于保存()我失踪?

编辑:这种形式保存的值站点名的值到Makesite表

回答

1

保存()调用不会创建对象,它只是将对象保存到数据库中,插入新行的情况下,这是一个新的对象,或更新它。

首先,form.is_valid()是一种方法,但你不会调用它,所以你总是试图保存名字。这可能与您的错误有关,也可能与您的错误无关,但无论如何它都是错误的,也许这就是查询错误来自的地方,而不是下面的get()调用。修复它,看看会发生什么。

+0

啊,是啊,没有解决它。感谢捕捉那个寿但是是的。仍然有这个错误。我认为它与请求没有任何关系。POST ['sitename']我认为这需要其他东西? – city 2012-04-21 23:40:01

+0

然后你将不得不展示更多的代码。除此之外,一切似乎都是正确的。 – 2012-04-22 00:38:24

+0

你需要看什么? – city 2012-04-22 02:17:50

相关问题