这是我的Django更新表单视图views.py
def updatebc(request, pk):
instance = get_object_or_404(BaseCase, pk=pk)
instance.base_case_name
bcform = BaseCaseForm(request.POST or None,instance=instance)
if bcform.is_valid():
instance = bcform.save(commit=False)
instance.save()
context = {
'bcform':bcform,
}
return render(request, 'update.html', context)
这是我的型号.py
class BaseCase(models.Model):
base_case_name = models.CharField(primary_key=True, max_length=255)
version = models.TextField(blank=True, null=True)
default = models.TextField(blank=True, null=True) # This field type is a guess.
class Meta:
managed = False
db_table = 'base_case'
当我尝试更新记录时,我实际上添加了一个,而不是替换它!
如django文档中所述:
主键字段是只读的。如果更改现有对象上主键的值,然后保存它,则会在旧对象旁边创建一个新对象。
您正在更改主键字段base_case_name
,因此django将创建一个新实例,而不是更新实例。
def updatebc(request, pk):
instance = get_object_or_404(BaseCase, pk=pk)
instance.base_case_name
bcform = BaseCaseForm(request.POST or None,instance=instance)
if bcform.is_valid():
instance = bcform.save(commit=False)
instance.save()
context = {
'bcform':bcform,
'instance': instance,
}
return render(request, 'update.html', context)
将实例也传递到您的模板并查看