如何让Django通用视图工作

如何让Django通用视图工作,django,Django,我这样做对吗?由于从未使用过“通用视图”,我打算使用Django的generic.UpdateView视图。当我“点击”表单上的“更新”按钮时,我得到一个无效的表单响应,消息为“具有此幻灯片名称的库已存在” 谢谢你的帮助 视图: 型号: class Library(models.Model): slide_name = models.CharField(max_length=5, primary_key=True) reference_value = models.Decimal

我这样做对吗?由于从未使用过“通用视图”,我打算使用Django的generic.UpdateView视图。当我“点击”表单上的“更新”按钮时,我得到一个无效的表单响应,消息为“具有此幻灯片名称的库已存在”

谢谢你的帮助

视图:

型号:

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