django - Django - 更新的数据未保存到数据库
问题描述
我想在给定范围内更改模型Branch
字段。Blank
例如,将Blank
模型的Branch
字段从 1 更改为 3。这是我的代码:
views.py
:
@login_required(login_url='sign-in')
def blanks(request):
if request.method == 'POST' and 'create-blank' in request.POST:
form = CreateBlankForm(request.POST)
if form.is_valid():
form.save()
# here happens updating process
elif request.method == 'POST' and 'share-blank' in request.POST:
form = CreateBlankForm(request.POST)
if form.is_valid():
form.update()
else:
form = CreateBlankForm()
blank_list = Blank.objects.all().order_by('-created')
context = {
'form': form,
}
return render(request, 'blank.html', context)
forms.py
:
class CreateBlankForm(ModelForm):
def save(self, commit=False):
blank = super(CreateBlankForm, self).save(commit=False)
number_of_objects = range(blank.number_from, blank.number_to+1)
for i in number_of_objects:
Blank.objects.create(
blank_series = blank.blank_series,
blank_number = i,
branch=blank.branch,
number_from = blank.number_from,
number_to = blank.number_to
)
def update(self, commit=False):
shared_blank = super(CreateBlankForm, self).update(commit=False)
number_of_objects = range(shared_blank.number_from, shared_blank.number_to+1)
for i in number_of_objects:
Blank.objects.update(
branch=shared_blank.branch
)
models.py
:
class Blank(models.Model):
blank_series = models.CharField(_('Blankın seriyası'), max_length=3)
blank_number = models.IntegerField(_('Blankın nömrəsi'), blank=True, null=True)
branch = models.ForeignKey(Branch, on_delete=models.CASCADE, blank=True, null=True)
number_from = models.IntegerField()
number_to = models.IntegerField()
def __str__(self):
return self.blank_series
解决方案
好像没问题!尝试调试
ps 而不是使用 for 循环试试这个:
update_arr = []
for obj in number_of_objects:
obj.branch = shared_blank.branch
update_arr.append(obj)
Blank.objects.bulk_update(update_arr, ['branch'])
尝试使用批量更新而不是多次调用更新方法,并确保在 number_of_objects 中的 for obj:每个 obj 都是空白模型的类型,以正确运行您的代码确保您传递要在表单中的 for 循环中更新的 obj 的id 。 py
我认为这肯定会奏效
推荐阅读
- javascript - (bignumber.js)“decimalPlaces”或“dp”不起作用
- regex - 检测 Base64 编码的 Snort 规则
- r - 在 r 中分离和使用值
- python - Python WAND 无法更改文件名的增量
- c++ - 当其中一个是函数参数时,在编译时连接 const char
- sql - SQL Server 分区窗口中多个属性的 Min() 和 Max()
- amazon-web-services - 网关附件删除失败,但找不到附件。问题出在哪里?
- python-3.x - python中列表的高效过滤
- python - 如何将数据框展平为 1 行并更改列以使列为:“column1.index1”、“column1.index2”等?
- google-bigquery - 对 Google Bigquery 中的嵌套字段使用 OFFSET 而不是 UNNEST