【发布时间】:2020-03-27 11:42:10
【问题描述】:
我正在创建一个可以更改预订书状态的表单,我有这个
class LibraryReserveForm(CrispyFormMixin, forms.Form):
def __init__(self, *args, **kwargs):
self.manager = kwargs.pop('manager')
super(LibraryReserveForm, self).__init__(*args, **kwargs)
def save(self):
self.instance.reserve_status = 'approved'
self.instance.save()
return self.manager
models.py
class ReservedBooks(TimeStampedModel):
BOOK_RESERVE_STATUS = Choices(
('for_approval', "For Approval"),
('approve', "Approved"),
('cancelled', "Cancelled"),
('rejected', "Rejected")
)
reserve_status = models.CharField(
_('Status'),
max_length=32,
choices=BOOK_RESERVE_STATUS,
default='for_approval'
)
...
查看
class LibraryReserveView(
ProfileTypeRequiredMixin,
MultiplePermissionsRequiredMixin,
FormView,
):
model = ReservedBooks
template_name = 'library/reserved_list.html'
form_class = LibraryReserveForm
def get_form_kwargs(self):
kwargs = super(LibraryReserveView, self).get_form_kwargs()
kwargs.update({
'manager': self.request.user.manager,
})
return kwargs
网址
url(
r'^reserve/(?P<pk>\d+)/$',
views.LibraryReserveView.as_view(),
name='reserved'
),
每次我提交按钮时,我都会在表单的 save() 方法中打印一些东西,但它没有打印一些东西,因此不会调用该方法。你如何调用保存方法?谢谢
【问题讨论】:
-
为什么不使用
UpdateView?这是一个FormView,它将使用 url 模式中的pk作为主键来更新实例。 -
你不应该使用
ModelForm吗?Form没有instance。 -
您的
LibraryReserveForm没有字段,因此它不执行任何操作。 -
我看到一些代码使用
forms.Forms进行保存并且它有效。然而,我的不是。我将重新编码这个以使用 UpdateView。谢谢 -
您好,我也尝试了modelForm,但是当我单击时,保存方法也不会调用。
标签: python django django-forms