如何在该列(django)中的某些整数值之后增加 db table 中的所有列值?
how do increment all column values in db table after certain integer values in that column (django)?
假设我在 Django 中创建了“X”数据库table,其中包含列 id(autofiled)、name(charfield) 和 occurrence(integerfield),现在假设其中已有 3 行可用
id
name
occurrence
1
ABC
1
2
BCD
2
3
CDE
3
我想根据(排序)出现次数获取数据,我面临一个问题,我想添加出现次数为 2(已经存在)的行,以及出现次数更大的所有行比 2 自动更新和递增。 (基本上,它是在索引号上插入数据,其中值是名称,索引是出现忽略id)。例如-
id
name
occurrence
1
ABC
1
2
BCD
3
3
CDE
4
4
XYZ
2
提前致谢。
class FooBar(models.Model):
occurrence = models.IntegerField()
name = models.CharField(max_length=100)
def save(self, *args, **kwargs):
same_occurrence = FooBar.objects.filter(occurrence=self.occurrence).first()
if same_occurrence:
same_occurrence.occurrence = self.occurrence + 1
same_occurrence.save()
return super(FooBar, self).save(*args, **kwargs)
class FooBar(models.Model):
occurrence = models.IntegerField()
name = models.CharField(max_length=100)
Try out this query
Foobar.object.filter(occurence__gte=sort_number).update(occurence=F('occurence')+1)
-> 另一种方式
course = module.course
modules = course.modules.all()
module_for_update = []
i = 1
for module in modules:
if module.pk == int(module_id):
module.order = order
module_for_update.append(module)
continue
if order == i:
i += 1
module.order = i
module_for_update.append(module)
i += 1
Module.objects.bulk_update(module_for_update, ["order"])
假设我在 Django 中创建了“X”数据库table,其中包含列 id(autofiled)、name(charfield) 和 occurrence(integerfield),现在假设其中已有 3 行可用
id | name | occurrence |
---|---|---|
1 | ABC | 1 |
2 | BCD | 2 |
3 | CDE | 3 |
我想根据(排序)出现次数获取数据,我面临一个问题,我想添加出现次数为 2(已经存在)的行,以及出现次数更大的所有行比 2 自动更新和递增。 (基本上,它是在索引号上插入数据,其中值是名称,索引是出现忽略id)。例如-
id | name | occurrence |
---|---|---|
1 | ABC | 1 |
2 | BCD | 3 |
3 | CDE | 4 |
4 | XYZ | 2 |
提前致谢。
class FooBar(models.Model):
occurrence = models.IntegerField()
name = models.CharField(max_length=100)
def save(self, *args, **kwargs):
same_occurrence = FooBar.objects.filter(occurrence=self.occurrence).first()
if same_occurrence:
same_occurrence.occurrence = self.occurrence + 1
same_occurrence.save()
return super(FooBar, self).save(*args, **kwargs)
class FooBar(models.Model):
occurrence = models.IntegerField()
name = models.CharField(max_length=100)
Try out this query
Foobar.object.filter(occurence__gte=sort_number).update(occurence=F('occurence')+1)
-> 另一种方式
course = module.course
modules = course.modules.all()
module_for_update = []
i = 1
for module in modules:
if module.pk == int(module_id):
module.order = order
module_for_update.append(module)
continue
if order == i:
i += 1
module.order = i
module_for_update.append(module)
i += 1
Module.objects.bulk_update(module_for_update, ["order"])