如何与Django SQLite数据库中的整数字段进行交互?

时间:2019-01-14 12:39:57

标签: python django sqlite django-models

如何在使用Django模型管理的SQLite数据库中更新整数字段?

我的Django模型摘录:

class Event(models.Model):
  title = models.CharField(max_length=100)
  [...]
  attendees = models.ManyToManyField(Attendee)
  max_attendees = 8
  #max_attendees = models.PositiveSmallIntegerField(null=True, blank=True)

使用python3 manage.py shell

进行测试
>>> from main.models import *
>>> Event.objects.first()
<Event: 8 places left>
>>> Event.objects.first().max_attendees
8
>>> Event.objects.first().max_attendees = 2
>>> Event.objects.first().save()
>>> Event.objects.first().max_attendees
8

如您所见,即使在“对象”上使用save(),该值也不会更新。

我也尝试过:

>>> Event.objects.first().max_attendees = models.PositiveSmallIntegerField(2)

但是它也不更新max_attendees的值。如何修改此字段的值?

1 个答案:

答案 0 :(得分:3)

您有两个问题。其中一个,max_attendees不是数据库字段,它是一个常量值。更改为:

class Event(models.Model):
   ...
    max_attendees = models.PositiveSmallIntegerField(default=8)

此更改后,您可能必须运行python manage makemigrationspython manage migrate

第二,每次调用Event.objects.first()时,您都在使用现有数据库记录创建一个新对象。您应该将实例分配给变量,并使用它直到完成,即:

>>> my_event = Event.objects.first()
>>> my_event.max_attendees = 2
>>> my_event.save()

然后您可以重新查询写入的数据:

>>> Event.objects.first().max_attendees