2017-02-22 4 views
3

Ich finde keine Möglichkeit, die erste Zeile aus meinem Choices_list zu entfernen, die wie ------- angezeigt wird.Entfernen Sie das Leerzeichen "---------" von RadioSelect

Ich habe schon einige Dinge ausprobiert: blank=True, Blank=False, ... und diese Zeile ist immer noch da.

Das ist, was ich in meiner Django Website bekommen:

enter image description here

Meine models.py und forms.py Dateien wie folgt aussehen:

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

Haben Sie eine Idee haben, diese zu löschen oder verstecken Linie ?

Vielen Dank

+0

Versuchen Sie das Komma entfernen, nachdem ('Cameroun', 'Cameroun')? – MKesper

+0

@MKesper Es ist nicht das Problem ^^ – Andro

+0

Add 'blank = False' für' favorite_theme' in 'Theme' Modell. Es sollte funktionieren. –

Antwort

0

Tun Sie wie folgt.

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

Danke für deine Antwort, aber wenn du nicht in meinen Fragen 'Kommentare gesehen hast, habe ich die Lösung ^^ Einfach nur 'default = None' hinzugefügt;) – Andro

4

Von Django ModelForm docs:

Wenn das Modellfeld Auswahl Satz hat, dann ist das widget Formularfeld wird Select, mit Entscheidungen festgelegt werden aus dem Bereich des Modells Entscheidungen kommen. Die Auswahlmöglichkeiten enthalten normalerweise die leere Auswahl, die standardmäßig ausgewählt ist. Wenn das Feld benötigt wird, zwingt dies den Benutzer, eine Auswahl zu treffen. Die leere Auswahl wird nicht eingeschlossen, wenn das Modellfeld blank = False und einen expliziten Standardwert Wert hat (der Standardwert Wert wird anfänglich stattdessen ausgewählt).

So leer Wahl in Form auszuschließen, sowohl blank=False und default zur Verfügung gestellt werden müssen. Nur die Einstellung blank=False funktioniert nicht.

+0

Danke, wie ich in meinen Fragen' Antworten gesagt habe fand ich die Lösung mit '' default = none' und 'blank = False';) – Deadpool

0

Dies ist eine alte Frage, aber falls andere Benutzer dies über Google finden: Sie müssen ,blank=False,default='Unspecified' zu Ihrem Feld hinzufügen.

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

Verwandte Themen