나는 무엇을 해야할지 모르지만 여기에 와서 물어보십시오. Heres는 상황 :장고의 양식 유효성 검사 문제가
models.py는
class Vote(models.Model):
""" Generic vote model """
user = models.ForeignKey(User)
question = models.ForeignKey(Question)
created = models.DateTimeField(auto_now_add=True)
objects = models.Manager()
cache = CacheVoteManager()
class Meta:
abstract = True
def __unicode__(self):
return '%s : %s' % (self.user.username, self.question.question)
class OptionVote(Vote):
option = models.ForeignKey(Option)
forms.py
class OptionChoiceField(forms.ModelChoiceField):
""" Custom model choice field for options """
widget = forms.RadioSelect(attrs={'class': 'c-opt'})
def label_from_instance(self, obj):
return mark_safe(
'<span class="c-opt-img">%s</span><span class="c-opt-name">%s</span>'
% (obj.media_content.draw_create_widget() , obj.name))
class OptionVoteForm(ModelForm):
""" Form to vote in a option-based question """
option = OptionChoiceField(queryset=OptionVote.objects.none(),
empty_label=None)
class Meta:
model = OptionVote
exclude = ['user', 'question']
def __init__(self, options=None, *args, **kwargs):
super(OptionVoteForm, self).__init__(*args, **kwargs)
if options:
self.fields['option'].queryset = options
views.py
form = OptionVoteForm(request.POST)
form.is_valid()
>> FALSE!!!!!!!!!!!!!!!
나는 형태와 거기에 오류를보고 시도 아무도 없어 보인다. 나는 폼의 clean 메서드에 플래그를 두 었으며 호출되지 않습니다. Sames는 OptionChoiceField의 메소드를 깨끗하게 처리합니다.
뷰에서 다음 코드
print 'PRINTING ERRORS: ' + str(form.errors)
for field in form:
print str(field.label_tag()) + ': ' + str(field.errors)
반환 :
PRINTING ERRORS:
<label for="id_option_0">Option</label>:
가 여기 나 좀 도와주십시오은 reaaally이 하나 붙어 미안.
EDIT 나는 다음과 같은 오류 얻을
form = OptionVoteForm(request.POST)
print form
할 때 : BTW
Exception Type: AttributeError
Exception Value: 'QueryDict' object has no attribute 'all'
ExceptionLocation: /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/django/forms/models.py in __iter__, line 882
오,와, 미안 장고 1.3
form.is_valid()를 수행 한 후에 form.errors를 사용해 보셨습니까? –
예, 'PRINTING ERRORS'문을 확인하십시오. form.is_valid() : ... else : [여기] – fceruti
'form = OptionVoteForm (request.POST) '뒤에'print form'을하면 어떤 결과가 나올까요? –