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",
            )
Вернуться на верх