2017-02-22 123 views
3

我找不到從Choices_list中刪除第一行的方法,它顯示爲-------從RadioSelect中刪除空格「---------」

我已經嘗試了一些東西:blank=True,Blank=False ......這條線還在那裏。

這就是我得到在我的Django的網站:

enter image description here

models.pyforms.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',) 

你有一個想法,以刪除或隱藏此線?

謝謝

+0

你嘗試之後( '喀麥隆', '喀麥隆')刪除逗號? – MKesper

+0

@MKesper這不是問題^^ – Andro

+0

在'Theme'模型中爲'favorite_theme'添加'blank = False'。它應該工作。 –

回答

0

請做如下。

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',) 
+0

感謝您的回答,但如果您沒有在我的問題的'意見中看到,我得到了解決方案^^只需添加'default = None';) – Andro

4

Django ModelForm docs

如果模型領域具有選擇集,表單字段的構件將被設置爲選擇,從模型領域的選擇來選擇。這些選項通常包括默認選擇的空白選項。如果該字段是必需的,則強制用戶進行選擇。如果模型字段有空白=假和顯式默認值值(默認值將被最初選擇代替),則不會包括空白選項。

因此,要排除表單中的空白選項,必須提供blank=Falsedefault。僅設置blank=False將不起作用。

+0

謝謝,正如我在我的問題的答案中說'我找到解決方案''default = none'和'blank = False';) – Deadpool

0

這是一個古老的問題,但萬一其他用戶通過Google發現此問題:您需要將,blank=False,default='Unspecified'添加到您的字段中。

像這樣: favorite_theme = models.CharField(max_length = 20, choices=FAVORITE_THEME, verbose_name="Sélectionner le thème",blank=False,default='Unspecified')