保存表单数据会重写同一行

use*_*030 5 forms django save django-forms django-views

我不知道如何保存创建新行的表单数据,保存时仅使用相同的“ id”重写数据,并在有多行时出现错误,这是我的代码:

models.py:

类Submitter(models.Model):
    Submitter = models.ForeignKey(用户)

    def __unicode __(自己):
        返回self.submitter.username

类Store(models.Model):
    creator = models.ForeignKey(Submitter)
    名称= models.CharField(_('名称'),空白=真,最大长度= 30)
    st = models.CharField(_('Street'),blank = True,max_length = 30)
    sub_date = models.DateField(_('访问日期'),)

    def __str __():
        返回u'%s-%s-%s'%(self.creator,self.name,self.sub_date)

views.py:

def StoreSave(请求):    
    如果request.method =='POST':
        表格= StoreForm(request.POST)
        如果form.is_valid():
            提交者,虚拟= Creator.objects.get_or_create(creator = request.user)
            存储,已创建= Store.objects.get_or_create(
                提交者=提交者
            )
            store.name = form.cleaned_data ['name']
            store.st = form.cleaned_data ['st']
            store.visit_date = form.cleaned_data ['visit_date']
            store.save()
            返回HttpResponseRedirect('/ user /%s /'%request.user.username)
    其他:
        形式= StoreForm()
    变量= RequestContext(request,{
            “表格”:表格
    })
    返回render_to_response('store / create_store.html',变量)

DrT*_*rsa 6

如果要创建新行,请创建它。:-) 喜欢

store = Store(submitter=submitter,
              name=form.cleaned_data['name'],
              st=form.cleaned_data['st'],
              store.visit_date=form.cleaned_data['visit_date'])
store.save()
Run Code Online (Sandbox Code Playgroud)

现在您使用的get_or_create方法尝试查找具有给定参数的行,这就是您更新它的原因。而且这个方法在多行的时候会抛出错误,没错,这是它的正常行为。

顺便说一句,最好将此保存代码放在表单的方法中(save例如)。

PS 刚刚注意到您visit_date的模型中没有字段,我想您的意思是sub_date.