#8027 closed (fixed)
wrong fieldset validation?
| Reported by: | Harut | Owned by: | Jacob |
|---|---|---|---|
| Component: | Forms | Version: | dev |
| Severity: | Keywords: | newforms | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
class WYSIWYGForm(forms.ModelForm):
class Media:
js = (
''.join((MEDIA_URL,"js/tiny_mce/tiny_mce.js")),
''.join((MEDIA_URL, "admin/js/textareas.js")),
)
class AdminWYSIWYG(admin.ModelAdmin):
form = WYSIWYGForm
class SongAdmin(AdminWYSIWYG):
fieldsets = (
(None, {
'fields': ('title', 'slug', 'group', 'author_l', 'co_author', 'author_v', 'lyrics')
}),
('Перевод и аккорды', {
'classes': ('collapse',),
'fields': ('accords', 'translation')
}),
)
prepopulated_fields = {"slug": ("title",)}
This construction raises error in validation.py, line 182:
for field in flatten_fieldsets(cls.fieldsets):
_check_form_field_existsw("fieldsets[%d][1]['fields']" % idx, field)
But without validation it works correctly. May be, there is possible to off checking fields if form is subclass of ModelForm? Or validate it in other way?
---->>>
if not issubclass(cls.form, BaseModelForm):
for field in flatten_fieldsets(cls.fieldsets):
_check_form_field_existsw("fieldsets[%d][1]['fields']" % idx, field)
May be, I do something wrong?
Change History (7)
comment:1 by , 17 years ago
| milestone: | → 1.0 beta |
|---|---|
| Triage Stage: | Unreviewed → Accepted |
comment:2 by , 17 years ago
comment:3 by , 17 years ago
Thanks for note.
Environment:
Request Method: GET
Request URL: http://localhost:8000/admin/
Django Version: 1.0-alpha-SVN-8135
Python Version: 2.5.2
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'profiles',
'banners',
'content',
'polls',
'forum',
'news',
'discography',
'filebrowser',
'pytils',
'django.contrib.sites',
'sitetree']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'django_fields.captchafield.middleware.request.RequestMiddleware')
Traceback:
File "/usr/lib/python2.5/site-packages/django/core/handlers/base.py" in get_response
78. request.path_info)
File "/usr/lib/python2.5/site-packages/django/core/urlresolvers.py" in resolve
238. for pattern in self.urlconf_module.urlpatterns:
File "/usr/lib/python2.5/site-packages/django/core/urlresolvers.py" in _get_urlconf_module
258. self._urlconf_module = __import__(self.urlconf_name, {}, {}, [''])
File "/home/fhen/djangos/dm/../dm/urls.py" in <module>
6. admin.autodiscover()
File "/usr/lib/python2.5/site-packages/django/contrib/admin/__init__.py" in autodiscover
14. __import__("%s.admin" % app)
File "/home/fhen/djangos/dm/discography/admin.py" in <module>
49. admin.site.register(Song, SongAdmin)
File "/usr/lib/python2.5/site-packages/django/contrib/admin/sites.py" in register
94. validate(admin_class, model)
File "/usr/lib/python2.5/site-packages/django/contrib/admin/validation.py" in validate
15. _validate_base(cls, model)
File "/usr/lib/python2.5/site-packages/django/contrib/admin/validation.py" in _validate_base
184. _check_form_field_existsw("fieldsets[%d][1]['fields']" % idx, field)
File "/usr/lib/python2.5/site-packages/django/contrib/admin/validation.py" in _check_form_field_existsw
149. return _check_form_field_exists(cls, model, opts, label, field)
File "/usr/lib/python2.5/site-packages/django/contrib/admin/validation.py" in _check_form_field_exists
263. "is missing from the form." % (cls.__name__, label, field))
Exception Type: ImproperlyConfigured at /admin/
Exception Value: `SongAdmin.fieldsets[3][1]['fields']` refers to field `title` that is missing from the form.
model:
class Song(models.Model):
title = models.CharField(u'название', max_length=150)
slug = models.SlugField(u'слаг')
author_l = models.ManyToManyField(Person, verbose_name=u'автор', related_name='lirycs_wrote', blank=True, null=True)
co_author = models.CharField(u'соавтор', max_length=250, blank=True, null=True)
author_v = models.ManyToManyField(Person, verbose_name=u'вокал', related_name='vokalists', blank=True, null=True)
group = models.ForeignKey(Performer, verbose_name=u'группа (в т.ч. и сольные)', blank=True, null=True)
lyrics = models.TextField(u'текст песни', blank=True, null=True)
accords = models.TextField(u'аккорды', blank=True)
translation = models.TextField(u'перевод песни', blank=True)
class Meta:
verbose_name=u'Песня'
verbose_name_plural=u'Песни'
ordering = ('title',)
def __unicode__(self):
return self.title
As I understand, during the field checking ModelForm is not instantianted and has no fields.
comment:4 by , 17 years ago
| milestone: | 1.0 beta → 1.0 |
|---|
comment:5 by , 17 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:6 by , 17 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
Can you please provide some more information about this. Specifically your model and the exact traceback. As a side note, there is no reason to join the
MEDIA_URLto relative media paths in the inner Media definition, it is done by default.