Как отобразить ChoiceField в Django с HTML-файлом? - PullRequest
0 голосов
/ 05 марта 2019

Я новичок в django, и я пытаюсь заставить ChoiceField работать для входа пользователя.Я пробовал две итерации html, но ни одна из них не отображала раскрывающуюся форму.

см. Мой код ниже для моделей, форм, html

models.py

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):

    CATEGORIES=(
        ('COM', 'Combat'),
        ('CRA', 'Crafting'),
        ('WAR', 'Warfare'),
    )

    post= models.CharField(max_length=500)
    post2= models.CharField(max_length=500)
    category=models.CharField(max_length=3, choices=CATEGORIES)

    user = models.ForeignKey(User, on_delete=models.CASCADE)

forms.py

class HomeForm(forms.ModelForm):
    post = forms.CharField()
    post2 = forms.CharField()

    category = forms.ChoiceField(choices=Post.CATEGORIES)

    class Meta:
        model = Post
        fields = ('post','post2','category',)

html


    <form method="post">

        {% csrf_token %}
        {{form.as_p}} or {{form}}


        <input type="submit" value="Submit">


    </form>

views.py

Класс HomeView (TemplateView): template_name = 'fitness / name.html'

def get(self, request):
    form = HomeForm()
    return render(request, self.template_name, {'form':form})

def post(self, request):

    form = HomeForm(request.POST)
    if form.is_valid():
        form.save()
        text = form.cleaned_data['post']
        form = HomeForm()
        return redirect('home:home')

    args = {'form': form, 'text': text}
    return render(request, self.template_name, args)

1 Ответ

0 голосов
/ 05 марта 2019

Попробуйте это

 class HomeForm(forms.ModelForm):
    post = forms.CharField()
    post2 = forms.CharField()
    class Meta:
        model = Post
        fields = ('post','post2','category',)
        widgets = {
            'category': forms.Select(choices=Post.CATEGORIES,attrs={'class': 'form-control'}),
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...