错误:int()参数必须是字符串或数字,而不是'NoneType'保存新记录Django

时间:2014-10-15 16:07:00

标签: python django django-forms

我尝试使用model.Autofield

在数据库中保存新记录时遇到一些问题

models.py

class Proveedor(models.Model):
    id_proveedor = models.AutoField(primary_key=True, db_column='id_proveedor')
    nombre = models.CharField(max_length=50)
    tipo = models.CharField(max_length=50)
    asignado_a = models.CharField(max_length=15,verbose_name='Asignado a')
    moneda = models.CharField(max_length=1, blank=True)
    class Meta:
        managed = False
        db_table = 'mpc_proveedores'

    def __unicode__(self):
        return self.nombre

我的表单

class ProvForm(forms.ModelForm):
    def __init__(self,*args,**kwargs):
       super(ProvForm,self).__init__(*args,**kwargs)
       self.helper = FormHelper(self)
       self.helper.layout.append(Submit('save','Grabar'))
    class Meta:
       model = Proveedor

我的观点

@login_required(login_url='/login/')
def proveedores(request):
    form = ProvForm(request.POST or None)

    if form.is_valid():
       form.save()
       messages.success(request, 'Proveedor Grabado')
       return HttpResponseRedirect('/monitor/')

    return render_to_response("proveedor.html",
                               locals(),
                               context_instance=RequestContext(request))

当我尝试保存新记录时,收到错误:

int() argument must be a string or a number, not 'NoneType'

显然,表单会收到id_proveedor空。我不确定是否需要传递表单定义或视图定义中的值。我想知道是否可以在不使用数据库触发器的情况下将此表单的某些字段保存在另一个模型上。

有什么建议吗?

0 个答案:

没有答案