Python Django在save()方法之后插入新对象,而不是更新
尝试更新现有Django模型对象时(使用Python Django在save()方法之后插入新对象,而不是更新,python,django,django-models,Python,Django,Django Models,尝试更新现有Django模型对象时(使用save()方法),将插入一个新行 例如: >>> import datetime >>> from data_lib.models import Meal >>> m = Meal(name="My First Meal!", description="this is my first meal's description") >>> print m.mealid None >
save()
方法),将插入一个新行
例如:
>>> import datetime
>>> from data_lib.models import Meal
>>> m = Meal(name="My First Meal!", description="this is my first meal's description")
>>> print m.mealid
None
>>> m.save()
>>> print m.mealid
None
>>> m.save()
在第二次save()
方法调用之后,在我的表中插入了一个重复的条目
以下是模型定义的示例:
class Meal(models.Model):
mealid = models.IntegerField(db_column='MealId', primary_key=True)
name = models.CharField(db_column='Name', max_length=45, blank=True)
description = models.CharField(db_column='Description', max_length=200, blank=True)
来自Django文档(,):
主键字段是只读的。如果更改现有对象上主键的值,然后将其保存,将在旧对象旁边创建一个新对象
问题在于模型对象的类定义。
一旦我将主键字段设置为
自动字段
,问题就消失了。我的新模型定义如下:
Django几乎完美的自动生成
class Meal(models.Model):
mealid = models.AutoField(db_column='MealId', primary_key=True)
name = models.CharField(db_column='Name', max_length=45, blank=True)
description = models.CharField(db_column='Description', max_length=200, blank=True)