У меня есть пользовательская форма, сгенерированная из модели.Модель имеет внешний ключ к сайту «Section». Когда я отправляю форму, она возвращает IntegrityError (нулевое значение в столбце «section_id» нарушает ограничение not-null).Я думал, что проблема была проста, пока я не начал работать над этим.Ошибка возникает только на моем сервере разработки (CentOS выпуск 5.5 (Final)).У меня нет этой проблемы в моей локальной среде (Mac OS X 10.5.8).
Я вошел в оболочку python и осмотрел объект формы;Я заметил, что поле «раздел» (form.fields.section) отсутствовало в моем dev env.И код проекта, и версия django идентичны на моем локальном компьютере и dev.К моему разочарованию добавляется тот факт, что форма, обращенная к пользователю, имеет скрытое поле «раздел», но когда эти данные публикуются в представлении, поле формы больше не существует.Любое понимание причины этой ошибки будет высоко оценено и спасет меня от расходов Рогейна.
Заранее спасибо, Крис.
Код:
views.py
def event_registration(request, slug):
section = get_object_or_404(Section, section__slug=slug)
parent_page = Page.objects.get(section=section, slug='overview')
page = Page.objects.get(section=section, slug='events-registration')
form = EventRegistrationForm(label_suffix='')
submitted = False
if request.POST.has_key('event'):
form = EventRegistrationForm(request.POST)
if form.is_valid():
form.save()
submitted = True
context = RequestContext(request)
return render_to_response('section/event_registration.html',
{
'section': section,
'page': page,
'form': form,
'submitted': submitted
},
context_instance=context)
forms.py
class EventRegistrationForm(better_forms.BetterModelForm):
class Meta:
model = EventRegistration
fieldsets = [
('Step 1', {
'fields': ['event', 'guests']
}),
('Step 2', {
'fields': ['first_name', 'email', 'last_name', 'phone', 'school_name']
}),
]
models.py
class EventRegistration(models.Model):
section = models.ForeignKey(Theater, verbose_name=_('Section'),
help_text=_("The Site Section"))
event = models.ForeignKey(Event, verbose_name=_('Event'))
guests = models.IntegerField(_('Number of Guests?'))
first_name = models.CharField(_('First Name'), max_length=100)
last_name = models.CharField(_('Last Name'), max_length=100)
email = models.CharField(_('E-Mail Address'), max_length=255)
phone = PhoneNumberField(_('Daytime Phone Number'))
school_name = models.CharField(_('School Name'), max_length=200, blank=True, null=True)