Django позволяет только однократное отправление формы и создание и сохранение переменной
У меня различные проблемы с моим кодом:
- I'd like my user to be able to complete ony one time my form and then when they try to access again the page to receive the success message alert and not the form anymore. How can I achieve this?
- When the form is submitted I get two successufull alert msg and I'd like to have just one
- test_date field doesn't appear in my database at all.
- I'd like to calculate the age and not making the person input that and also to create and save in my databese a code based on the input user, but I'm keeing getting an error so I # that part of the code. Is it possible? Thank you alll!
модель
class UserBio(models.Model):
name = models.CharField(max_length=120)
birthdate = models.DateField()
age = models.CharField(max_length=2)
phone = models.CharField(max_length=10)
test_date = models.DateField(auto_now_add=True)
height = models.CharField(max_length=3)
weight = models.CharField(max_length=3)
id = models.CharField(max_length=120)
form
class UserBio(forms.ModelForm):
class Meta:
model = UserBio
fields = (name', 'phone', 'height', 'weight')
просмотров
def add_bio(request):
if request.method == "POST":
form = UserBio(request.POST)
if form.is_valid():
#age = datetime.now().year - self.birthdate.year
#id = self.name + '_' self.height + '/' + self.weight + '_' self.phone
form.save()
messages.success(request, 'Form submission successful')
else:
form = UserBio()
return render(request, 'accounts/profile/add_information.html', {'form': form})
html
{% extends 'layouts/default/page.html' %}
{% load bootstrap4 %}
{% load i18n %}
{% block content %}
{% if messages %}
<div class="alert alert-success" role="alert">
{% for message in messages %}
<h4 class="alert-heading">Well done!</h4>
<p>----------------</p>
<hr>
<p class="mb-0">--------</p>
</div>
{% endfor %}
</ul>
{% else %}
<form action="" method=POST>
{% csrf_token %}
{% bootstrap_form form %}
<br/>
<input type="submit" value="submit" class="btn btn-primary">
{% endif %}
{% endblock %}
Вам нужно перенаправить на главную страницу или страницу успеха после успешной отправки формы. что-то вроде
return redirect( 'myapp:homepage' )
Предполагаю, что 1 также исправит это
.
.auto_now_add
делает его полем, которое не может быть предоставлено пользователем. Возможно, вы захотите удалить это поле из модели и предоставить форме текущее время по умолчаниюПройдено, необходимо показать ошибку.