【问题标题】:How to display ChoiceField in django with html file?如何使用 html 文件在 django 中显示 ChoiceField?
【发布时间】:2019-07-26 08:13:45
【问题描述】:

我是 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 = '健身/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】:

试试这个

 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'}),
        }

【讨论】:

  • 谢谢,但仍然没有显示任何内容,只有 Post 1 和 Post 2 输入字段。然后类别显示为没有任何下拉列表的字符串。然后就是提交按钮。
  • 嘿,检查这是否有效,问题是您使用的 ModelForm 与普通 Form 的工作方式略有不同
  • 感谢您的帮助,但它仍然显示相同的内容。我最初想知道这是否是一个html问题?
  • 查明问题变得越来越困难,不过,我建议您遵循 Django 的最佳实践,很多地方您都偏离了它们。当这种情况发生时,小事情最终可能会导致消磨时间的问题。 marinamele.com/django 和两勺 Django 是它的两个最佳资源。
  • 我真的认为这里的问题是您如何处理 ModelForm,尝试使用基于类的视图重做整个事情,阅读如何编写 ModelForm 视图,使用ModelForm 正在编写基于类的视图。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2016-04-09
  • 2014-02-24
  • 1970-01-01
  • 2013-04-09
  • 2017-11-29
  • 2020-09-10
相关资源
最近更新 更多