我没有找到一个方法来从我删除的第一行Choices_list所显示一样-------。
我已经尝试了一些方法:blank=True,,Blank=False...,并且此行仍然存在。
这就是我在Django网站中得到的:
我models.py和forms.py文件看起来像:
# models.py
# coding: utf-8
from django.db import models
from django.utils.encoding import force_text
FAVORITE_THEME = (
('Datasystems', 'Datasystems'),
('Cameroun', 'Cameroun'),
)
class Theme(models.Model):
favorite_theme = models.CharField(max_length = 20, choices=FAVORITE_THEME, verbose_name="Sélectionner le thème")
# forms.py
#-*- coding: utf-8 -*-
from django import forms
from django.forms import ModelForm
from .models import Theme
class ThemeForm(forms.ModelForm):
class Meta:
model = Theme
widgets = {'favorite_theme' : forms.RadioSelect,}
fields=('favorite_theme',)
Run Code Online (Sandbox Code Playgroud)
您有删除或隐藏此行的想法吗?
谢谢
如果模型字段设置了选项,则表单字段的小部件将设置为选择,其中选项来自模型字段的options。这些选项通常包括默认情况下选择的空白选项。如果需要该字段,这将迫使用户进行选择。如果模型字段具有blank = False和明确的默认值(默认情况下将默认选择默认值),则不包括空白选项。
因此,要排除表格中的空白选项blank=False,default必须同时提供和。仅设置blank=False将不起作用。
像下面那样做。
import copy
from django import forms
from .models import Theme
class InhSelect(forms.widgets.Select):
def __deepcopy__(self, memo):
self.choices = self.choices[1:]
obj = copy.copy(self)
obj.attrs = self.attrs.copy()
obj.choices = copy.copy(self.choices)
memo[id(self)] = obj
return obj
class MyRadioSelect(forms.widgets.RendererMixin, InhSelect):
renderer = forms.widgets.RadioFieldRenderer
_empty_value = ''
class ThemeForm(forms.ModelForm):
class Meta:
model = Theme
widgets = {'favorite_theme' : MyRadioSelect(),}
fields=('favorite_theme',)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
903 次 |
| 最近记录: |