我无法弄清楚如何保存我的表单数据创建一个新行,当保存它时只使用相同的'id'重写数据并在有多行时转发错误,这是我的代码:< / p>
models.py:
class Submitter(models.Model): submitter=models.ForeignKey(User) def __unicode__(self): return self.submitter.username class Store(models.Model): creator=models.ForeignKey(Submitter) name = models.CharField(_('name'),blank=True,max_length=30) st = models.CharField(_('Street'),blank=True,max_length=30) sub_date = models.DateField(_('Visit Date'),) def __str__(self): return u'%s-%s-%s'%(self.creator,self.name,self.sub_date)
views.py:
def StoreSave(request): if request.method == 'POST': form = StoreForm(request.POST) if form.is_valid(): submitter, dummy= Creator.objects.get_or_create(creator=request.user) store, created = Store.objects.get_or_create( submitter=submitter ) store.name = form.cleaned_data['name'] store.st = form.cleaned_data['st'] store.visit_date = form.cleaned_data['visit_date'] store.save() return HttpResponseRedirect('/user/%s/' % request.user.username) else: form = StoreForm() variables = RequestContext(request, { 'form': form }) return render_to_response('store/create_store.html', variables)
答案 0 :(得分:2)
如果要创建新行,请创建它。 :-)喜欢
store = Store(submitter=submitter,
name=form.cleaned_data['name'],
st=form.cleaned_data['st'],
store.visit_date=form.cleaned_data['visit_date'])
store.save()
现在使用get_or_create
方法尝试查找具有给定参数的行,这就是更新它的原因。当有多行时,这种方法会抛出一个错误,是的,这是它的正常行为。
顺便说一下,最好将此保存代码放在表单的方法中(例如save
)。
P上。 S.刚刚注意到你的模型中没有visit_date
字段,我认为你的意思是sub_date
。