我想在给定范围内更改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
答案 0 :(得分:0)
尝试一下:
在更新方法中使用:
ModuleNotFoundError: No module named 'kivy'
答案 1 :(得分:0)
看来还可以! 尝试调试
p.s。而不是使用循环 试试这个:
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中的obj:每个obj是空白模型的类型 为了使您的代码正常工作,请确保您要传递的obj的ID 要在form.py中的for循环中更新
我认为这肯定会起作用
答案 2 :(得分:0)
此代码段似乎有问题
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
)
Blank.objects.update( branch = shared_blank.branch ) 您要更新分支值的id obj在这里未定义 尝试在obj中也传递id