根据单词的重复增加模型整数字段



假设我有两个型号,一个框模型和一个模型。最后一个将盒子作为外键。每个盒子用户可以使用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)

最新更新