假设我有两个型号,一个框模型和一个模型。最后一个将盒子作为外键。每个盒子用户可以使用Modelform添加用户可以添加的字符串对象容器。型号应该是这样的:
models.py
class Box(models.Model):
name = models.CharField(max_length=120, unique=True)
def __str__(self):
return self.name
class Things(models.Model):
box = models.ForeignKey(Box)
name = models.CharField(max_length=120)
thing_number = models.PositiveIntegerField(default=1)
def __str__(self):
return self.name
现在,每次用户将相同的字符串插入表单中时,我都想将" thit thing_number"整数字段增加到1。是否有一种简单的方法?
我认为您应该将Thing
的字段thing_number
默认为零。如果这样做,那么您可以通过
thing, created = Things.objects.get_or_create(box=your_box, name=thing_name)
thing.things_number += 1
thing.save()
其他明智:
thing, created = Things.objects.get_or_create(box=your_box, name=thing_name,
default={'thing_number':0})
thing.things_number += 1
thing.save()
----额外
正如 @e4c5所说
Things.objects.get_or_create(box=your_box, name=thing_name, default={'thing_number':0})
Things.objects.filter(box=your_box, name=thing_name).update(thing_number=F('thing_number') + 1)