如何用dtml文件在django中显示ChoiceField?

问题描述 投票:0回答:1

我是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.朋友

class 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)
python django forms view model
1个回答
0
投票

试试这个

 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'}),
        }
© www.soinside.com 2019 - 2024. All rights reserved.