#python #django #crud
Вопрос:
Я абсолютно новичок в Джанго. Следующие коды взяты из проекта Git. Вот отличный пример Ajax Creatview
. Я могу очень хорошо с этим работать. Как мне добавить self.request.FILES
сюда, для загрузки / сохранения изображений. Я также добавил enctype = "multipart / form-data"
в форму. Я добавил self.запрос.ФАЙЛЫ в AjaxValidForm
класс, но это не сработало. Любая помощь будет признательна. Заранее спасибо.
class SubscriberCreate(LoginRequiredMixin, AjaxCreateView):
model = Subscriber
form_class = SubscriberForm
ajax_modal = 'billing/subscriber_form.html'
ajax_list = 'billing/subscriber/subscriber_list.html'
class AjaxContextData:
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
filter = self.kwargs
[filter.pop(key, None) for key in ['pk', 'id', 'uuid', 'slug']]
# context['object_list'] = self.get_queryset().filter(**filter)
context['%s_list' % self.model.__name__.lower(
)] = self.get_queryset().filter(is_deleted=False).filter(**filter).order_by('-id')
return context
class AjaxValidForm:
def form_valid(self, form):
data = dict()
context = self.get_context_data()
if form.is_valid():
form.save()
data['form_is_valid'] = True
data['form_id'] = form.instance._meta.model_name
data['html_list'] = render_to_string(
self.ajax_list, context, self.request)
data['message'] = 'Successful saved.'
else:
data['form_is_valid'] = False
data['message'] = 'Form validation error!'
data['html_form'] = render_to_string(
self.ajax_modal, context, request=self.request)
if self.request.is_ajax():
return JsonResponse(data)
else:
return super().form_valid(form)
class AjaxCreateView(AjaxContextData, AjaxValidForm, CreateView):
def get(self, request, *args, **kwargs):
self.initial = self.kwargs
self.object = None
context = self.get_context_data()
if request.is_ajax():
html_form = render_to_string(self.ajax_modal, context, request)
return JsonResponse({'html_form': html_form})
else:
return super().get(request, *args, **kwargs)