Я работаю с Django 1.9 и замечаю странное поведение при работе с моделями. Я знаю, что следующий код создает объект, сохраняет его в базу данных, изменяет поле, а затем обновляет ту же самую запись в базе данных:Django 1.9, обновляющий объект модели, создает экземпляр нового объекта
cat = models.Cat(name="Bob")
cat.save()
cat.name = "Sally"
cat.save()
Однако, когда я запрашиваю все мои объекты с помощью cats = models.Cat.objects.all()
я считаю, что довольно чем возвращение ["Sally"]
оно фактически возвращает ["Bob", "Sally"]
. По-видимому, cat.save()
создает новый элемент в базе данных, а не обновляет существующий. Раньше я работал с Django, но у меня никогда не было этой проблемы. Следует отметить, что атрибут name
является основным ключом для модели Cat. Может быть, поэтому он не обновляется, а создает совершенно новую запись?