У меня есть форма, «результаты», где одно из полей «subjectID» - это много-ко многим потому что для каждого предмета есть более одного результата. Я хочу, чтобы одна из кнопок отправки позволяла мне сохранять то, что я ввела, а затем перенаправить в ту же форму, теперь несвязанной, за исключением того, что поле «subjectID» много-ко-многим остается таким же, поэтому я могу ввести больше результатов для этого объекта ,«сохранить и добавить еще» в Django (не admin): отправить затем предварительно заполнить одно поле формы
Edit: Я дал понять, что я хотел экземпляр что я выбранный в поле subjectID остаться тем же самым. Я отправил код ниже, на самом деле, кажется, работает для меня
из models.py
class ResultsForm(forms.Modelform):
class Meta:
model = models.Results
fields = ['subjectID', # this is the field want
# to populate the form with when I "save and add another"
'slideNum', # IntegerField
'resultType' ] # ForeignKey
из views.py
def addResults(request):
if request.method == 'POST'
form = ResultsForm(request.POST)
if form.is_valid():
form.save()
if 'Save_and_add_another' in request.POST:
subjectID = form.fields['subjectID']
prepop = {'subjectID' : subjectID}
form = ResultsForm(initial=prepop)
return render(request, 'slideAdmin/addResults.html', {'form': form})
elif 'Save_and_return' in request.POST:
return HttpResponseRedirect('/home/')
else:
form = ResultsForm()
return render(request, 'slideAdmin/addResults.html', {'form': form})
Прямо сейчас, когда я нажимаю на «сохранить и добавить еще "с моей addResults формы, я получаю эту ошибку:
TypeError at /slidebox/addResults
'ModelMultipleChoiceField' object is not iterable
, который происходит при рендеринге {{form.as_p} } в шаблоне.
Edit: изменения я сделал в views.py
if 'Save_and_add_another' in request.POST:
subjectID = form.cleaned_data.get('subjectID')
form = ResultsForm(initial={'subjectID': subjectID})
return render(request, 'slideAdmin/addResults.html', {'form': form})
Насколько я могу судить, это изменение работает. Еще раз спасибо
Это сработало, спасибо, и я удалил жестко запрограммированные URL-адреса. Я согласен, что ваши изменения делают код более сукцином, но мне нравится более верный способ - я уверен, что вы понимаете различия, но для других людей, которые могли бы это увидеть, вот хорошая дискуссия: [http://www.pydanny.com /the-easy-form-views-pattern-controversy.html](http://www.pydanny.com/the-easy-form-views-pattern-controversy.html) – NickleDave
Я не видел эту статью, но прочитает это сразу. – Brandon
Если вы используете Django 1.5 или выше, шаблон «easy forms view» не должен отрицательно влиять на ваш код, но в любом случае это прекрасно. Всегда есть случаи, когда мне нужно делать что-то по-другому в GET и использовать стандартный шаблон. – Brandon