Форма редактирования существующей формы не сохраняет и перенаправляет на неправильный.Джанго - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь добавить форму редактирования в существующую модель, но она не сохраняет каждый раз и перенаправляет меня на домашнюю страницу вместо страницы «Учетная запись».Что я делаю неправильно?почему изменения в существующей модели не видны?любая помощь будет оценена.

views.py

def account(request):
    data_now = datetime.datetime.now().strftime("%Y-%m-%d")
    #my form
    time = get_object_or_404(Time, pk=52)
    if request.method == "POST":
        form = TimeEditForm(request.POST, instance=time)
        if form.is_valid():
            time = form.save(commit=False)
            time.save()
            return redirect('account')
    else:
        form = TimeEditForm(instance=time)


    context = {'data_now': data_now, 'time_edit_form': form}
    return render(request, 'account.html', context)

forms.py

class TimeEditForm(forms.ModelForm):
    class Meta:
        model = Time
        fields = ('compartment',)
        labels ={
            'free_or_no': 'field name in my language?'
        }

models.py

class Time(models.Model):
    day_time = models.ForeignKey(DayTime, on_delete=models.CASCADE)
    compartment = models.CharField(max_length=11)
    free_or_no = models.BooleanField(default=True)
    time_equivalent = models.IntegerField()

urls.py

urlpatterns = [
    url(r'^$', views.masseur_detail, name='masseur_detail'),
    url(r'^account$', views.account, name='account')
]

account.html

                <form action="." method="post">
                    {% csrf_token %}
                    {{ time_edit_form|crispy }}
                    <button type="submit" class="btn btn-block btn-primary"> Save</button>
                </form>

1 Ответ

0 голосов
/ 15 февраля 2019

Это довольно тонкий вопрос.

Обычно в Django рекомендуется использовать URL-адреса, заканчивающиеся косой чертой - например, "/ account /" - но ваш URL-адрес просто "/ account", без косой черты.

Теперь, когда вы вводите action="." в вашу форму, браузер интерпретирует это как «сообщение в корень текущего каталога».Если ваш URL-адрес заканчивается косой чертой, он будет разрешен на той же странице.Но поскольку это не так, браузер отправляет сообщения самому корню, то есть "/".

Лучшее решение - изменить шаблон URL на r'^account/$';В качестве альтернативы (но не рекомендуется) вы можете изменить форму для использования action="".

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