def post(self, request): user = request.user form = FieldForm(request.POST) if form.is_valid(): cd = form.cleaned_data field = form.save(commit=False) field.user = user field.save() return redirect('/fields/') messages.add_message(request, messages.INFO, 'Поле с таким именем уже существует!') return render(request, 'fields/field_add.html', {'form': FieldForm()})
def __init__(self, request=None, instance=None): field = instance # alias post = None if not request else request.POST self.form = FieldForm(post, instance=field) self.optionsFormset = None # Создание формсета, если необходимо if not field or (field and field.fieldType == 'list'): # Используем form=<наш базовый класс формы>! OptionsFormset = inlineformset_factory(Field, FieldOption, form=ModelForm) # # Передаём instance=form.instance, а не field. В качестве field мог # быть передан None; в этом случае пустой instance создаётся внутри # конструктора формы. # # При выполнении сохранения формсет пунктов списка будет обращаться к # заданному instance за идентификатором динамического поля. В случае, # когда на странице добавляется новое динамическое поле (а не редактируется # существующее), особо важно, чтобы instance, на который ссылаются форма # и формсет, был одним объектом, чтобы формсет узнал идентификатор # вновь добавленной записи. # self.optionsFormset = OptionsFormset(post, instance=self.form.instance)
def post(self, request, slug): instance = get_object_or_404(Field, slug=slug) form = FieldForm(request.POST, instance=instance) if form.is_valid(): form.save() return redirect('/fields/{}/'.format(slug)) messages.add_message(request, messages.INFO, 'Данные неккоректны') return render(request, 'fields/field_add.html', {'form': FieldForm()}) # class CropView(View): # def get(self, request): # crops = Field.objects.prefetch_related().all() # # for crop in crops: # print('{}'.format(crop.name, crop.season)) # # return render(request, 'fields/field_add.html', {'form': FieldForm()})
def get(self, request, slug): instance = get_object_or_404(Field, slug=slug) return render(request, 'fields/field_add.html', {'form': FieldForm(instance=instance)})
def get(self, request): return render(request, 'fields/field_add.html', {'form': FieldForm()})