Django Forms ChoiceField не показывает варианты; остается скрытым
views.py
def rank(request):
if request.method == 'POST':
form = RankRegisterForm(request.POST or None)
if form.is_valid:
form.user = request.user
form.save(commit=False)
return redirect('matches/rank.html')
else:
form = RankRegisterForm()
return render(request, 'matches/rank.html', {'form': form})
forms.py
class RankRegisterForm(forms.ModelForm):
rank = forms.ChoiceField(choices=rankChoices)
class Meta:
model = Rank
fields = (
"rank",
)
html
{% extends 'base.html' %}
{% block content %}
{% if user.is_authenticated %}
<div class="container">
<p> Belt Rank Status </p>
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button class="red-text text-darken-1" type="submit">Submit</button>
<br></br>
</form>
</div>
{% endif %}
{% endblock content %}
models.py
class Rank(models.Model):
user = models.OneToOneField(
CustomUser,
on_delete=models.CASCADE,
primary_key=True,
)
rank = models.CharField("rank", max_length=20, choices=rankChoices)
rankPoints = models.IntegerField("rank points", default=0)
certificateOfLegitimacy = models.BooleanField(default=False)
promoted = models.BooleanField(default=False)
def __str__(self):
return self.rank + ", " + self.user.email
DOM
<form method="POST">
<input type="hidden" name="csrfmiddlewaretoken" value="ITC0cjPUCmvhuYD2K1eDgjPOt1daSRJbi8mbpLmv6ETGVe9akMI2SOfjEJQcXJ9A">
<p>
<label for="id_rank">Rank:</label>
<select name="rank" id="id_rank">
Белый
Синий
Фиолетовый
Коричневый
Черный
Спасибо, это отстой. Я искал везде, и нет ни одного вопроса, связанного с моим, на который был бы дан ответ. Он скрыт, я подозреваю, что это из-за дерьма csrf. но я не знаю. Помогите брату.
Попробуйте сделать отступ Meta класса и rank переменной в RankRegisterForm классе
#forms.py
class RankRegisterForm(forms.ModelForm):
rank = forms.ChoiceField(choices=rankChoices)
class Meta:
model = Rank
fields = (
"rank",
)