如何让Django通用视图工作
我这样做对吗?由于从未使用过“通用视图”,我打算使用Django的generic.UpdateView视图。当我“点击”表单上的“更新”按钮时,我得到一个无效的表单响应,消息为“具有此幻灯片名称的库已存在” 谢谢你的帮助 视图: 型号:如何让Django通用视图工作,django,Django,我这样做对吗?由于从未使用过“通用视图”,我打算使用Django的generic.UpdateView视图。当我“点击”表单上的“更新”按钮时,我得到一个无效的表单响应,消息为“具有此幻灯片名称的库已存在” 谢谢你的帮助 视图: 型号: class Library(models.Model): slide_name = models.CharField(max_length=5, primary_key=True) reference_value = models.Decimal
class Library(models.Model):
slide_name = models.CharField(max_length=5, primary_key=True)
reference_value = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal(0))
esd = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal(0))
current_mean = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal(0))
counts_averaged = models.IntegerField(default=0)
status = models.CharField(max_length=9)
def __str__(self):
return self.slide_name
您正在使用
slide\u name
作为主键,并保存一个已存在的名称。主键字段始终是唯一的。您应该重新考虑将幻灯片名称作为主键。为了使其唯一,您可以使用unique=True
作为旁白,我建议您避免为基于Django泛型类的视图重写get
或post
。在这种情况下,您可以通过覆盖form\u valid
而不是post
来控制对象的保存方式。这很有用-谢谢。我想让你的名字成为主键。我想更新记录。那么我如何让它更新呢?
class Library(models.Model):
slide_name = models.CharField(max_length=5, primary_key=True)
reference_value = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal(0))
esd = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal(0))
current_mean = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal(0))
counts_averaged = models.IntegerField(default=0)
status = models.CharField(max_length=9)
def __str__(self):
return self.slide_name