Python Django在save()方法之后插入新对象,而不是更新

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 >

尝试更新现有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
>>> 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)