2017-02-22 18 views
3

-------のように表示されるChoices_listから最初の行を削除する方法が見つかりません。RadioSelectから空白 "---------"を削除してください

私はすでにいくつかのことを試しました:blank=TrueBlank=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

以下のようになります。 Django ModelForm docsから

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

モデルフィールドが選択肢セットを持っている場合は、フォームフィールドのウィジェットは、選択肢がモデルフィールドの選択肢から来ると、選択に設定されます。。選択肢には通常、デフォルトで選択されている空白の選択肢が含まれます。フィールドが必要な場合は、ユーザーが選択する必要があります。モデルフィールドにブランク= Falseと明示的にの値がの値(デフォルトではの値が最初に選択されます)がある場合、空白の選択は含まれません。

したがって、フォームの空白の選択を除外するには、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')

関連する問題