Как получить доступ к объекту формы до и после сохранения в django-bootstrap-modal-forms
В моем представлении добавления нового элемента есть следующий код. Некоторые поля заполняются пользователем, некоторые поля заполняются в фоновом режиме. Если форма валидна, то пользователь перенаправляется на url с параметром (slug) от добавленного объекта. Как я могу преобразовать этот код в django-bootstrap-modal-forms способ?
def category_view(request, slug, *args, **kwargs):
...
if request.POST:
form = CreateItemForm(request.POST)
if form.is_valid():
if not request.user.is_authenticated:
raise PermissionDenied()
obj = form.save(commit=False)
obj.created_country = Constants.country_code
obj.created_by = request.user
obj.save()
return redirect('category:item_detail', slug=obj.slug)
Я использовал django-bootstrap-modal-forms следующим образом. но поля страна и пользователь не являются null и должны быть заполнены. Эти поля не являются частью формы.
class add_person(BSModalCreateView):
template_name = 'add_item.html'
form_class = CreateItemForm
success_message = 'Success: Item was created.'
success_url = reverse_lazy('category:item_detail') # slug needed
Вы спрашиваете, как изменить форму, и единственный код, который вы не предоставили - это форма. Но попробуйте сделать что-то вроде этого:
forms.py
class BaseForm(forms.BaseForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields.values():
if isinstance(field.widget, widgets.RadioSelect):
continue
elif isinstance(field.widget, widgets.Select):
field.widget.attrs.update({'class': 'form-select'})
continue
field.widget.attrs.update({'class': 'form-control'})
class CreateItemForm(BaseForm):
# your code
Этот итерес над вашими FormField
и добавляет класс bootstrap form-select
, или гораздо более важный form-control
к виджету вашего поля.