社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

django中的单选按钮

udaykls • 5 年前 • 1878 次点击  

试图寻找解决方案,但我有一个不同的问题,找不到任何相关的 我用models.py中的字段创建了一个django表单

表单.py

from .models import ProValue
from django import forms


class SchoolInput(forms.ModelForm):
    school_name = forms.CharField(
        max_length=255, required=True, widget=forms.TextInput(
            attrs={
                'class': 'input'
            }
        ))
    level_of_grades = forms.IntegerField(min_value=1, required=True)
    num_of_days = forms.IntegerField(min_value=1, max_value=7, required=True)
    division_check = forms.ChoiceField(
        label='Do you have multiple divisions for your grades?', widget=forms.RadioSelect)

    class Meta:
        model = ProValue
        answer = (
            ('no', 'no'),
            ('yes', 'yes')
        )
        fields = [
            'school_name',
            'level_of_grades',
            'num_of_days',
            'division_check',
        ]

用这个我看不到页面上的单选按钮 我试过了

    division_check = forms.ChoiceField(
        label='Do you have multiple divisions for your grades?', widget=forms.RadioSelect())

    division_check = forms.ChoiceField(
        label='Do you have multiple divisions for your grades?', widget=forms.RadioSelect(choice=answer))

这告诉我答案没有定义

这是我的模特

from django.db import models
from django import forms


class ProValue(models.Model):
    school_name = models.CharField(max_length=50)
    level_of_grades = models.IntegerField()
    num_of_days = models.IntegerField()
    answer = (
        ('Yes', 'Yes'),
        ('No', 'No'),
    )
    division_check = models.CharField(
        max_length=5, choices=answer)

另外,我需要在Meta类中再次定义答案吗?一开始我没有做,我试着解决上面的问题,但还是做不到。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52058
 
1878 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Iain Shelvington
Reply   •   1 楼
Iain Shelvington    5 年前

您的模型很好,可以删除自定义字段 division_check 只需更改窗体中的小部件和标签 Meta

class Meta:
    model = ProValue
    fields = [
        'school_name',
        'level_of_grades',
        'num_of_days',
        'division_check',
    ]
    widgets = {
        'division_check': forms.RadioSelect,
    }
    labels = {
        'division_check': 'Do you have multiple divisions for your grades?',
    }
Willem Van Onsem
Reply   •   2 楼
Willem Van Onsem    5 年前

你定义了 answer 在你的 Meta 类,但在定义小部件时,这不在范围内。

可以参照模型中的选项,例如:

from .models import ProValue
from django import forms


class SchoolInput(forms.ModelForm):
    school_name = forms.CharField(
        max_length=255, required=True, widget=forms.TextInput(
            attrs={
                'class': 'input'
            }
    ))
    level_of_grades = forms.IntegerField(min_value=1, required=True)
    num_of_days = forms.IntegerField(min_value=1, max_value=7, required=True)
    division_check = forms.ChoiceField(
        label='Do you have multiple divisions for your grades?',
        choices=ProValue.answer,
        widget=forms.RadioSelect
    )

    class Meta:
        model = ProValue
        fields = [
            'school_name',
            'level_of_grades',
            'num_of_days',
            'division_check',
        ]