2013-08-18 3 views
0

Я нахожу это намного сложнее, чем я думаю, это должно быть. У меня есть Django 1.4.5, и с использованием прототипов модели и шаблонов вы хотите создать опцию, чтобы иметь несколько флажков. Я очень хочу использовать методологию модели, формы и представления, так как позже я хотел бы использовать БД. Прямо сейчас у меня просто возникают проблемы с отображением нескольких флажков, которые могут допускать множественный выбор.Несколько флажков в Django

Models.py

GENDER_CHOICES = (
    ('M', 'Male'), 
    ('F', 'Female'), 
    ('O', 'Other'), 
) 

class Gender(models.Model): 
    MALE = 1 
    FEMALE = 2 
    OTHER = 3 
    gender = models.CharField(('Gender'), max_length=512, choices=GENDER_CHOICES,blank=True) 

class MyPreferences(models.Model): 
    MyGenderPref = models.ManyToManyField(Gender, blank=True, null=True) 

Forms.py

class MyPreferencesForm(forms.Form): 
     MyGenderPref = forms.MultipleChoiceField(choices=GENDER_CHOICES,widget=forms.CheckboxSelectMultiple()) 

Views.py

from django.forms import ModelForm 
from django.forms import forms 
from TestForm.models import MyPreferences 


def GoPreferences(request): 
    if request.method == "POST": 
     form = MyPreferencesForm(request.POST) 
     if form.is_valid(): 

      commit=False means the form doesn't save at this time. 
      commit defaults to True which means it normally saves. 
      model_instance = form.save(commit=False) 
      model_instance.timestamp = timezone.now() 
      model_instance.save() 
      return redirect('victory') 
    else: 
     form = MyPreferencesForm() 

    return render(request, "aboutme.html", {'form': form}) 

Однако, когда я пытаюсь это, я получаю:

GET 
Request URL: http://127.0.0.1:8080/myprefs 
Django Version: 1.4.5 
Exception Type: NameError 
Exception Value:  
name 'MultipleChoiceField' is not defined 
Exception Location: /home/brett/TestForm/TestForm/forms.py in MyPreferencesForm, line 17 
Python Executable: /usr/bin/python 
Python Version: 2.7.4 

Каков наилучший способ сделать это, чтобы впоследствии я мог использовать БД с минимальными проблемами. Но пока я не могу заставить это работать.

+0

Вы уверены, что ваш forms.py использует "forms.MultipleChoiceField()", а не просто «MultipleChoiceField() "? Поскольку это сообщение об ошибке делает его похожим на последнее. – Kevin

+0

Ah Да, я взял его, но сообщение об ошибке с формой. XXX обратно: объект «module» не имеет атрибута «MultipleChoiceField» – disruptive

+0

Что произойдет, если вы попробуете «из django.forms import MultipleChoiceField», а затем используйте «MyGenderPref» = MultipleChoiceField (...) "в forms.py? Если это работает, то право Бренда и вы импортируете модуль неправильных форм. – Kevin

ответ

0

В разделе импорта, у вас есть

from django.forms import forms 

может быть, она должна быть

from django import forms