Trying to use your package according to steps specified in readme. My model looks like this
class Image(models.Model):
fs = FileSystemStorage(location=settings.MEDIA_ROOT)
entity = models.ForeignKey(Entity, on_delete = models.CASCADE)
image = models.FileField(max_length=255, upload_to='uploads', storage = fs)
class NewEntityForm(FileFormMixin, FilterForm):
....
self.fields['images'] = MultipleUploadedFileField(required = False)
In my views, I'm trying to save form data (it contains various fields, not only images):
class NewEntityForm(LoginRequiredMixin, FormView):
def form_valid(self, form):
img = 'images'
if img in form.cleaned_data and form.cleaned_data[img] is not None:
for each in form.cleaned_data[img]:
Image.objects.create(entity = newentity, image = each)
Internal Server Error: /en/complexapp/new/
Traceback (most recent call last):
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/views/generic/base.py", line 68, in view
return self.dispatch(request, *args, **kwargs)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/contrib/auth/mixins.py", line 56, in dispatch
return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/views/generic/base.py", line 88, in dispatch
return handler(request, *args, **kwargs)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/views/generic/edit.py", line 222, in post
return self.form_valid(form)
File "/home/lyssdod/myapp/complexapp/views.py", line 149, in form_valid
Image.objects.create(site = newsite, oftype = i, image = each)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/manager.py", line 122, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/query.py", line 401, in create
obj.save(force_insert=True, using=self.db)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/base.py", line 708, in save
force_update=force_update, update_fields=update_fields)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/base.py", line 736, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/base.py", line 820, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/base.py", line 859, in _do_insert
using=using, raw=raw)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/manager.py", line 122, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/query.py", line 1039, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1059, in execute_sql
for sql, params in self.as_sql():
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1019, in as_sql
for obj in self.query.objs
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1019, in <listcomp>
for obj in self.query.objs
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 1018, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 968, in pre_save_val
return field.pre_save(obj, add=True)
File "/home/lyssdod/myapp/mydjango/lib/python3.4/site-packages/django/db/models/fields/files.py", line 309, in pre_save
if file and not file._committed:
AttributeError: 'bytes' object has no attribute '_committed'
I realize that it's somehow connected with the type I'm using. printing that type gathers <class 'django_file_form.models.UploadedFileWithId'>
, but in your testproject uploading is done without ajax and type passed into form_valid
is basic <class django.core.files.uploadedfile.InMemoryUploadedFile'>
, which does not have problems with insertion into FileField
. How should I change my code to save uploaded objects in the database?