Как я могу вернуться на заднюю страницу после создания django? - PullRequest
0 голосов
/ 27 января 2020

После создания moneylog я хочу вернуться к moneybook_detail, поэтому я сделал moneylog / View.py :

class moneylog_create(FormView):

    form_class = forms.CreateMoneylogForm
    template_name = "moneylogs/create.html"

    def form_valid(self, form):
        moneylog = form.save()
        moneybook = moneybook_models.Moneybook.objects.get(
            pk=self.kwargs["pk"])
        form.instance.moneybook = moneybook
        moneylog.save()
        form.save_m2m()
        return redirect(reverse("moneybook:detail", kwargs={'pk': self.kwargs["pk"]}))

и это Moneybook / urls. py

app_name = "moneybooks"

urlpatterns = [
    path("create/", views.moneybook_create.as_view(), name="create"),
    path("update/<int:pk>/",
         views.moneybook_update.as_view(), name="update"),
    path("<int:pk>/", views.moneybook_detail, name="detail")
]

Как я могу вернуться к moneybook_detail после создания moneylog?

Ответы [ 2 ]

0 голосов
/ 27 января 2020
class moneylog_create(FormView):

    form_class = forms.CreateMoneylogForm
    template_name = "moneylogs/create.html"

    def form_valid(self, form):
        moneylog = form.save()
        moneybook = moneybook_models.Moneybook.objects.get(
            pk=self.kwargs["pk"])
        form.instance.moneybook = moneybook
        moneylog.save()
        form.save_m2m()
        return redirect(reverse("moneybooks:detail", kwargs={'pk': self.kwargs["pk"]}))


app_name = "moneybooks"

urlpatterns = [
    path("create/", views.moneybook_create.as_view(), name="create"),
    path("update/<int:pk>/",
         views.moneybook_update.as_view(), name="update"),
    path("detail/<int:pk>/", views.moneybook_detail, name="detail")
]
0 голосов
/ 27 января 2020

Когда вы используете форму модели вместо FormView, используйте Create view и исправьте свой возврат, как показано

 class moneylog_create(CreateView):
    form_class = forms.CreateMoneylogForm
    template_name = "moneylogs/create.html"

def form_valid(self, form):
    moneylog = form.save()
    moneybook = moneybook_models.Moneybook.objects.get(
        pk=self.kwargs["pk"])
    form.instance.moneybook = moneybook
    moneylog.save()
    form.save_m2m()
    return reverse("moneybooks:detail", kwargs={'pk': self.kwargs["pk"]})

и используйте непересекающийся шаблон в URL

path("moneybook/<int:pk>/", views.moneybook_detail, name="detail")

и ваш вид создания - moneylog_create, где, как вы упомянули в URL-адресе, как moneybook_create

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...