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

Python 如何与Django SQLite数据库中的整型字段交互?,python,django,sqlite,django-models,Python,Django,Sqlite,Django Models,如何在Django模型管理的SQLite数据库中更新整数字段 my Django车型摘录: class Event(models.Model): title = models.CharField(max_length=100) [...] attendees = models.ManyToManyField(Attendee) max_attendees = 8 #max_attendees = models.PositiveSmallIntegerField(null=Tr

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

my 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

但它也不会更新最大出席人数的值。如何修改此字段的值?

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

class Event(models.Model):
   ...
    max_attendees = models.PositiveSmallIntegerField(default=8)
在此更改之后,您可能必须运行
pythonmanagemakemigrations
pythonmanagemigrate

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

>>> my_event = Event.objects.first()
>>> my_event.max_attendees = 2
>>> my_event.save()
然后,您可以重新查询写入的数据:

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