Khi lưu biểu mẫu tôi gặp phải lỗi này: "" cần phải có giá trị cho trường " khảo sát "trước khi mối quan hệ nhiều-nhiều này có thể được sử dụng.Lỗi Django: cần có giá trị cho trường "..." trước mối quan hệ nhiều-nhiều này có thể được sử dụng
Models.py:
class SurveyResult(models.Model):
stay = models.OneToOneField(Stay, related_name='survey')
created = models.DateTimeField(default=datetime.now)
vote = models.BooleanField(default=False)
vote_service = models.BooleanField(default=False)
comment = models.TextField(blank=True, null=True)
def getThreads(self):
return SurveyThread.objects.filter(parent_survey = self)
threads = property(getThreads)
def __unicode__(self):
return self.vote and 'Good' or 'Bad'
class Meta:
get_latest_by = '-created'
class SurveyThread(models.Model):
survey = models.ManyToManyField(SurveyResult, related_name='parent_survey')
email = models.EmailField(max_length=200)
comment = models.TextField(blank=True, null=True)
views.py:
survey_list = SurveyResult.objects.filter(stay__guest__user=request.user) \
.select_related('stay', 'stay__guest')
forms = {}
for survey in survey_list:
forms[survey] = SurveyThreadForm(data=request.POST or None, survey=survey)
if forms[survey].is_valid():
instance = forms[survey].save()
return redirect('.')
forms.py
class SurveyThreadForm(forms.Form):
comment = forms.CharField(required=False, widget=forms.Textarea)
def __init__(self, *args, **kwargs):
self.survey = kwargs.pop('survey', None)
if not self.survey:
raise NotImplementedError("SurveyResult object is required at this moment")
super(SurveyThreadForm, self).__init__(*args, **kwargs)
self.fields['comment'].label = "Message to send to guest:"
def save(self, commit=True):
s = SurveyThread()
s.survey = self.survey
s.email = "[email protected]"
s.comment = self.cleaned_data['comment']
if commit:
s.save()
return s
Thông báo lỗi:
ValueError at/
"<SurveyThread: SurveyThread object>" needs to have a value for field "surveythread" before this many-to-many relationship can be used.
Request Method: POST
Request URL: http://127.0.0.1:8000/
Django Version: 1.5.1
Exception Type: ValueError
Exception Value:
"<SurveyThread: SurveyThread object>" needs to have a value for field "surveythread" before this many-to-many relationship can be used.
Exception Location: /Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages/django/db/models/fields/related.py in __init__, line 586
Python Executable: /Users/tlovett1/.virtualenvs/guestretain/bin/python
Python Version: 2.7.2
Python Path:
['/Users/tlovett1/guestretain',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages/pip-1.3.1-py2.7.egg',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python27.zip',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/plat-darwin',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/plat-mac',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/plat-mac/lib-scriptpackages',
'/Users/tlovett1/.virtualenvs/guestretain/Extras/lib/python',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/lib-tk',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/lib-old',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/lib-dynload',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages',
'/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages/PIL']
Server time: Sun, 7 Jul 2013 10:22:55 -0500
Traceback:
Traceback Switch to copy-and-paste view
/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages/django/core/handlers/base.py in get_response
response = callback(request, *callback_args, **callback_kwargs) ...
▶ Local vars
/Users/tlovett1/guestretain/retain/apps/profiles/utils.py in _wrapped_view
return view_func(request, *args, **kwargs) ...
▶ Local vars
/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages/endless_pagination/decorators.py in decorated
return view(request, *args, **kwargs) ...
▶ Local vars
/Users/tlovett1/guestretain/retain/apps/dashboard/views.py in dashboard
instance = forms[survey].save() ...
▶ Local vars
/Users/tlovett1/guestretain/retain/apps/surveys/forms.py in save
s.survey = self.survey ...
▶ Local vars
/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages/django/db/models/fields/related.py in __set__
manager = self.__get__(instance) ...
▶ Local vars
/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages/django/db/models/fields/related.py in __get__
through=self.field.rel.through, ...
▶ Local vars
/Users/tlovett1/.virtualenvs/guestretain/lib/python2.7/site-packages/django/db/models/fields/related.py in __init__
(instance, source_field_name)) ...
▶ Local vars
Tôi mới dùng Django và Python. Tôi có thể đăng các dấu vết gỡ lỗi hoặc di chuyển tập tin nếu cần thiết, nhưng tôi có một cảm giác đó là một sửa chữa đơn giản. Rõ ràng là tôi muốn lưu nhiều chuỗi khảo sát cho mỗi kết quả khảo sát.
Cảm ơn!
Thực ra, thông báo lỗi chính xác và truy nguyên sẽ rất hữu ích để chúng tôi cung cấp cho bạn và trả lời. –
Tôi đã thêm thông báo lỗi đầy đủ và truy nguyên về chuỗi ban đầu. – tlovett1