2015-11-16 4 views
0

Я пытаюсь отобразить значения флажка на мой взгляд, но он не работает ..Джанго: как использовать флажок в админ

forms.py

class JoursForm(forms.ModelForm): 
    class Meta: 
     model = Event 

    JOURS = ( 
     (1, 'L'), 
     (2, 'M'), 
     (3, 'M'), 
     (4, 'J'), 
     (5, 'V'), 
    ) 
    jours = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, 
            choices=JOURS, label= u"répéter les :") 

    def clean_my_field(self): 
     return self.cleaned_data['jours'] 

admin.py

class EventAdmin(admin.ModelAdmin): 
    form = JoursForm 
    save_on_top = True 
    save_as = True 
    list_per_page = 25 
    list_display = ('title', 'start', 'end', 'user', 'fin', 'frequency') 

    fieldsets = (
     (None, { 
      'fields': ('title','start', 'end', 'is_cancelled', 'calendar', 'user', 'description', ('frequency', 'fin'), 'activated', 'jours',) 
     }), 
    ) 

views.py

if request.method == 'POST': 
    form = JoursForm(request.POST) 
    if form.is_valid(): 
     jours = form.cleaned_data.get('jours') 
     print 'jours', jours 

else: 
    form = JoursForm 

Я хотел бы использовать значения флажка, но когда я сохраняю в админке после того, как пометил флажки, они остаются неконтролируемыми.

Что делать?

ответ

1

Ваш выбор jours не сохраняется нигде - для его сохранения не существует modelfield. Чтобы сделать эту работу вы можете создать модель для Jours

class Jour(models.Model): 
    abbrev = models.CharField(length="1") 

и добавить свои будни там.

Затем добавить поле к модели событий:

jours=models.ManyToManyField(Jour) 

Тогда вы можете просто изменить форму:

class JoursForm(forms.ModelForm): 
    class Meta: 
     model = Event 

    jours = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, 
           queryset=Jour.objects.all(), label= u"répéter les :") 

Однако, я не уверен, если это то, что вы хотите достичь.

+0

Я получаю сообщение об ошибке: __init __() принимает не менее 2 аргументов (3 данных) – Patrice

+0

Вы получаете ошибку в администраторе или в представлении? –

+0

Извините, что мой ответ неправильный - можете ли вы разместить свою модель событий? В вашей модели должны быть определены ваши варианты Jours? –

Смежные вопросы