我在尝试更新Django中的某些记录时遇到一些问题: 当我试图更新一些记录时,应用程序会插入一个新的记录,我不知道我为什么会有这种行为。在
型号
class DetalleRecepcion(models.Model):
id_proveedor = models.ForeignKey(Proveedor,db_column='id_proveedor',primary_key=True, verbose_name='Proveedor')
anio = models.IntegerField( null=False)
mes = models.IntegerField(verbose_name='Mes')
fecha_recepcion = models.DateField(verbose_name='Fecha Recepcion')
usuario = models.CharField(max_length=15, blank=True)
num_archivos = models.IntegerField(primary_key=True, verbose_name='No de archivos')
class Meta:
managed = False
db_table = 'mpc_detalle_recepcion'
视图:
^{pr2}$形式:
class DetRecForm(forms.ModelForm):
fecha_recepcion = forms.DateField(widget=DateInput(),)
def __init__(self,*args,**kwargs):
super(DetRecForm,self).__init__(*args,**kwargs)
self.helper = FormHelper(self)
self.helper.layout = Layout(
Field('id_proveedor',
'anio',
'mes',
'usuario',
readonly = True
),
Fieldset('',
'fecha_recepcion',
'num_archivos',
Submit('save','Grabar'),
HTML('<a class="btn btn-danger" id="cerrar">Cancelar</a>')
)
)
class Meta:
model = DetalleRecepcion
我对其他模型使用相同的视图和表单定义来呈现编辑表单,其他模型的效果很好,记录也会更新。 我不明白发生了什么事。 我重写了这个模型的表单,视图定义,我不知道是什么问题。 数据库是一个遗留数据库,表没有任何关系或约束。 顺便说一下,我用的是Django crispy
提前谢谢
比如用pk获取object
若您使用相同的表单来创建和更新视图,那个么您需要在您的唯一字段上提供clean方法,并在对象存在时引发ValidationError。在
但在您的例子中,假设您在字段上使用复合主键:id_proveedor,num_archivos,您应该覆盖整个表单的clean方法:
相关问题 更多 >
编程相关推荐