Мне нужно, чтобы кнопка «Просмотр» на странице создания/редактирования admin. Когда пользователь нажимает на эту кнопку, форма должна быть сохранена и перенаправлена на определенный URL-адрес, где пользователь может видеть информацию об объекте, который он только что добавил или отредактировал.Django admin Предварительный просмотр
Так что я пользовательский класс ModelAdmin с необходимыми для меня инлайн FormSets:
class InboundAdmin(admin.ModelAdmin, ListView):
model = Inbound
form = InboundForm
change_form_template = 'admin/tour/inbound_form.html'
inlines = [InboundTourDatesInline, InboundProgramInline, InboundFeedbackInline, InboundMedia,
InboundTourSliderPhotoInline, InboundPriceDynamicsInline]
Шаблон проходит admin/change_form.html
. Этот шаблон имеет пользовательскую кнопку:
<input type="submit" value="{% trans 'Preview' %}" class="default draft-submit" name="_save_as_draft" />
И этот сценарий, который:
$('.draft-submit').on('click', function(){
$.ajax({
type: "POST",
url: "{% url 'tours:inbound_draft' %}",
data: $("#{{ opts.model_name }}_form").serialize()
});
});
Это inbound_draft
вид:
def draft_inbounds(request):
print('inbounds')
form = InboundForm(request.POST or None, request.FILES or None)
if form.is_valid():
print('is_valid')
form.save()
# Here I should return specific url with pk as an attribute.
print('not_valid')
Проблема заключается в том, что при нажатии на кнопку Preview она сохраняет изменения но перенаправляет меня обратно в list_view в admin. Каков правильный способ решения моей проблемы?
Я попытался это, но он все еще перенаправляет меня в список вида. – belek
Позвольте пояснить. У вас есть форма и 'input [type =" button "]' внутри этой формы. Вы нажимаете этот ввод и перезагружаете страницу, верно? Я имею в виду, это странное поведение **. Не могли бы вы отключить JS и посмотреть, что-нибудь изменится? –