#14760: Admin inlines with file/image field fails to save_as ----------------------------------+----------------------------------------- Reporter: paulos | Owner: nobody Status: new | Milestone: Component: django.contrib.admin | Version: 1.2 Keywords: | Stage: Unreviewed Has_patch: 0 | ----------------------------------+----------------------------------------- How to reproduce: * declare an admin inline which "model" property referes to a model containing an image field and another char field * declare a parent ModelAdmin having save_as=True * in the admin, create and save a new parent with one or more inlines * try to save_as
Result: * the form does not validate, image or file field will be empty with error: "This field is required.", extra inlines gone. * if you try to upload other file admin blows up with ValueError: invalid literal for int() with base 10: '' Test case: - dummy/models.py {{{ from django.db import models class Foo(models.Model): name = models.CharField(max_length=30) class Bar(models.Model): parent = models.ForeignKey(Foo) title = models.CharField(max_length=30) img = models.ImageField(upload_to='testpath') }}} - dummy/admin.py {{{ from django.contrib import admin from bugtest.dummy.models import * class BarInline(admin.StackedInline): model = Bar class FooAdmin(admin.ModelAdmin): inlines = (BarInline,) save_as = True admin.site.register(Foo, FooAdmin) }}} Traceback: {{{ Django Version: 1.2.3 Python Version: 2.6.5 Installed Applications: ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.admin', 'django.contrib.admindocs', 'bugtest.dummy', ] Installed Middleware: ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware') File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/core/handlers/base.py" in get_response 100. response = callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/contrib/admin/options.py" in wrapper 239. return self.admin_site.admin_view(view)(*args, **kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/utils/decorators.py" in _wrapped_view 76. response = view_func(request, *args, **kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/views/decorators/cache.py" in _wrapped_view_func 69. response = view_func(request, *args, **kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/contrib/admin/sites.py" in inner 190. return view(request, *args, **kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/utils/decorators.py" in _wrapper 21. return decorator(bound_func)(*args, **kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/utils/decorators.py" in _wrapped_view 76. response = view_func(request, *args, **kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/utils/decorators.py" in bound_func 17. return func(self, *args2, **kwargs2) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/db/transaction.py" in _commit_on_success 299. res = func(*args, **kw) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/contrib/admin/options.py" in add_view 792. prefix=prefix, queryset=inline.queryset(request)) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/forms/models.py" in __init__ 704. queryset=qs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/forms/models.py" in __init__ 429. super(BaseModelFormSet, self).__init__(**defaults) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/forms/formsets.py" in __init__ 47. self._construct_forms() File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/forms/formsets.py" in _construct_forms 97. self.forms.append(self._construct_form(i)) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/forms/models.py" in _construct_form 717. form = super(BaseInlineFormSet, self)._construct_form(i, **kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/forms/models.py" in _construct_form 448. connection=connections[self.get_queryset().db]) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/db/models/fields/subclassing.py" in inner 53. return func(*args, **kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/db/models/fields/subclassing.py" in inner 53. return func(*args, **kwargs) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/db/models/fields/__init__.py" in get_db_prep_lookup 306. value = self.get_prep_lookup(lookup_type, value) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/db/models/fields/__init__.py" in get_prep_lookup 292. return self.get_prep_value(value) File "/usr/local/lib/python2.6/dist- packages/Django-1.2.3-py2.6.egg/django/db/models/fields/__init__.py" in get_prep_value 479. return int(value) }}} -- Ticket URL: <http://code.djangoproject.com/ticket/14760> Django <http://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-upda...@googlegroups.com. To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-updates?hl=en.