Я нахожу это намного сложнее, чем я думаю, это должно быть. У меня есть 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
Каков наилучший способ сделать это, чтобы впоследствии я мог использовать БД с минимальными проблемами. Но пока я не могу заставить это работать.
Вы уверены, что ваш forms.py использует "forms.MultipleChoiceField()", а не просто «MultipleChoiceField() "? Поскольку это сообщение об ошибке делает его похожим на последнее. – Kevin
Ah Да, я взял его, но сообщение об ошибке с формой. XXX обратно: объект «module» не имеет атрибута «MultipleChoiceField» – disruptive
Что произойдет, если вы попробуете «из django.forms import MultipleChoiceField», а затем используйте «MyGenderPref» = MultipleChoiceField (...) "в forms.py? Если это работает, то право Бренда и вы импортируете модуль неправильных форм. – Kevin