После создания moneylog я хочу вернуться к moneybook_detail, поэтому я сделал moneylog / view.py :
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 redirect(reverse("moneybooks:detail", kwargs={'pk': moneybook.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")
]
moneylogs / urls.py
app_name = "moneylogs"
urlpatterns = [
path("create/<int:pk>/", views.moneylog_create.as_view(), name="create"),
path("update/<int:pk>/", views.moneylog_update.as_view(), name="update")
]
вот моя деталь. html
<a style="display:scroll;position:fixed;bottom:50px;right:30px;" href="{% url 'moneylogs:create' pk %}">
<div class="rounded-full h-16 w-16 flex items-center justify-center bg-red-400 text-bold font-bold text-white">+</div>
</a>
вот мои moneylogs / forms.py
class CreateMoneylogForm(forms.ModelForm):
class Meta:
model = models.Moneylog
fields = (
"pay_day",
"payer",
"dutch_payer",
"price",
"category",
"memo",
)
widgets = {
"payer": forms.RadioSelect(attrs={"style": "width: 100 %"}),
"dutch_payer": forms.CheckboxSelectMultiple,
"memo": forms.Textarea(attrs={"rows": 3})
}
def save(self, *args, **kwargs):
moneylog = super().save(commit=False)
return moneylog
и moneylog_form. html
<form method="POST" class="w-full" enctype="multipart/form-data">
{% csrf_token %}
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<span class="text-red-700 font-medium text-sm">{{error}}</span>
{% endfor %}
{% endif %}
<div class="input {% if field.errors %}has_error{% endif %}">
<div class="flex">
<div class="w-1/4">
{{form.name.label}}
</div>
<div class="w-3/4 border-b my-2 py-3">
{{form.name}}
</div>
</div>
{% if form.name.errors %}
{% for error in form.name.errors %}
<span class="text-red-700 font-medium text-sm">{{error}}</span>
{% endfor %}
{% endif %}
</div>
<div class="input {% if field.errors %}has_error{% endif %}">
<div class="flex">
<div class="w-1/4">
{{form.companion.label}}
</div>
<div class="w-3/4 flex inline border-b my-2 py-3">
<div class="w-3/4">
{{form.companion}}
</div>
<div class= "w-1/4 flex justify-center ">
<a href="{% url 'tempfriends:create' %}"><i class="fas fa-plus-circle"></i></a>
</div>
</div>
</div>
{% if form.companion.errors %}
{% for error in form.companion.errors %}
><span class="text-red-700 font-medium text-sm">{{error}}</span>
{% endfor %}
{% endif %}
</div>
<div class="input {% if field.errors %}has_error{% endif %}">
<div class="flex">
<div class="w-1/4">
{{form.country.label}}
</div>
<div class="w-3/4 border-b my-2 py-3">
{{form.country}}
</div>
</div>
{% if form.country.errors %}
{% for error in form.country.errors %}
<span class="text-red-700 font-medium text-sm">{{error}}</span>
{% endfor %}
{% endif %}
</div>
<div class="input {% if field.errors %}has_error{% endif %}">
<div class="flex">
<div class="w-1/4">
{{form.location.label}}
</div>
<div class="w-3/4 border-b my-2 py-3">
{{form.location}}
</div>
</div>
{% if form.location.errors %}
{% for error in form.location.errors %}
<span class="text-red-700 font-medium text-sm">{{error}}</span>
{% endfor %}
{% endif %}
</div>
<div class="input {% if field.errors %}has_error{% endif %}">
<div class="flex">
<div class="w-1/4">
{{form.start_date.label}}
</div>
<div class="w-3/4 border-b my-2 py-3">
{{form.start_date}}
</div>
</div>
{% if form.start_date.errors %}
{% for error in form.start_date.errors %}
<span class="text-red-700 font-medium text-sm">{{error}}</span>
{% endfor %}
{% endif %}
</div>
<div class="input {% if field.errors %}has_error{% endif %}">
<div class="flex">
<div class="w-1/4">
{{form.end_date.label}}
</div>
<div class="w-3/4 border-b my-2 py-3">
{{form.end_date}}
</div>
</div>
{% if form.end_date.errors %}
{% for error in form.end_date.errors %}
<span class="text-red-700 font-medium text-sm">{{error}}</span>
{% endfor %}
{% endif %}
</div>
<button class="px-2 py-1 rounded bg-red-500 text-white">{{cta}}</button>
</form>
перенаправление страницы отсутствует. без движения, он печатает просто журнал
"POST / moneylogs / create / 1 / HTTP / 1.1" 200 5275
Как я могу вернуться к moneybook_detail после создания moneylog? ? почему мой редирект не работает?