我的模特名为Tour。此模型包含类Inbound
,Outbound
,Education
。
对于每种旅游类型,我在管理面板中制作了自定义页面。为此,我覆盖了url并在admin.py文件中创建了视图。每个视图都有formset。
所以当我提交formset时,浏览器会显示POST消息。要解决此问题,请将HttpResponseRedirect
与reverse()
一起使用。
我的问题是,当我提交Outbound
或Education
类的formset时,我的视图会返回Inbound
类的视图。我认为这是因为每个类中的视图都具有相同的名称。我试图将它们重命名为独特的(如def five_destinations_inbound
等),但它没有帮助。
所以我的问题是如何在HttpResponseRedirect
中指明班级名称?还是有其他解决方案吗?
我的admin.py代码:
class InboundAdmin(TranslationAdmin, ListView):
model = Inbound
def get_urls(self):
urls = super(InboundAdmin, self).get_urls()
my_urls = patterns('',
url(r'^five_destinations/$',
self.admin_site.admin_view(self.five_destinations),
name='five_destinations')
)
return my_urls + urls
def five_destinations(self, request, template='admin/tour/inbound/five_destination.html'):
five_destination_formset = modelformset_factory(FiveDestinationsInbound, form=FiveDestinationInboundForm,
extra=3, max_num=3)
if request.method == 'POST':
formset = five_destination_formset(request.POST, request.FILES)
formset.save(commit=False)
if formset.is_valid():
# some code, some logic
formset.save()
return HttpResponseRedirect(reverse('admin:five_destinations'))
else:
formset = five_destination_formset()
return render(request, template, locals())
class OutboundAdmin(TranslationAdmin):
model = Outbound
def get_urls(self):
urls = super(OutboundAdmin, self).get_urls()
my_urls = patterns('',
url(r'^five_destinations/$',
self.admin_site.admin_view(self.five_destinations),
name='five_destinations')
)
return my_urls + urls
def five_destinations(self, request, template='admin/tour/outbound/five_destination.html'):
five_destination_formset = modelformset_factory(FiveDestinationsOutbound, form=FiveDestinationOutboundForm,
extra=3, max_num=3)
if request.method == 'POST':
formset = five_destination_formset(request.POST, request.FILES)
formset.save(commit=False)
if formset.is_valid():
# some code, some logic
formset.save()
return HttpResponseRedirect(reverse('admin:five_destinations'))
else:
formset = five_destination_formset()
return render(request, template, locals())
class EducationAdmin(TranslationAdmin):
model = Education
def get_urls(self):
urls = super(EducationAdmin, self).get_urls()
my_urls = patterns('',
url(r'^five_destinations/$',
self.admin_site.admin_view(self.five_destinations),
name='five_destinations')
)
return my_urls + urls
def five_destinations(self, request, template='admin/tour/outbound/five_destination.html'):
five_destination_formset = modelformset_factory(FiveDestinationsEducation, form=FiveDestinationEducationForm,
extra=3, max_num=3)
if request.method == 'POST':
formset = five_destination_formset(request.POST, request.FILES)
formset.save(commit=False)
if formset.is_valid():
# some code, some logic
formset.save()
return HttpResponseRedirect(reverse('admin:five_destinations'))
else:
formset = five_destination_formset()
return render(request, template, locals())