Python 如何与Django SQLite数据库中的整型字段交互?
如何在Django模型管理的SQLite数据库中更新整数字段 my Django车型摘录: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
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