#35657: Specifying db_default on FileField crashes
-------------------------------------+-------------------------------------
     Reporter:  David Sanders        |                     Type:  Bug
       Status:  new                  |                Component:  Database
                                     |  layer (models, ORM)
      Version:  5.0                  |                 Severity:  Normal
     Keywords:  db_default           |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
 I guess there's the existential question: "Does db_default make sense with
 FileField/ImageField?"  Perhaps, as long as there's a file at the path
 defined by the `db_default` expression? 🤔

 In any case when defined with a `FileField`, the presence of
 `DatabaseDefault` as the field's value causes a crash:

 Given the model:

 {{{
 class Foo(models.Model):
     bar = models.FileField(db_default="path/to/file.txt")
 }}}

 We get `AttributeError` exceptions when attempting to create an instance:

 {{{
 >>> Foo.objects.create()
 Traceback (most recent call last):
   File "<console>", line 1, in <module>
   File "/path/to/django/django/db/models/manager.py", line 87, in
 manager_method
     return getattr(self.get_queryset(), name)(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/path/to/django/django/db/models/query.py", line 660, in create
     obj.save(force_insert=True, using=self.db)
   File "/path/to/django/django/db/models/base.py", line 891, in save
     self.save_base(
   File "/path/to/django/django/db/models/base.py", line 997, in save_base
     updated = self._save_table(
               ^^^^^^^^^^^^^^^^^
   File "/path/to/django/django/db/models/base.py", line 1160, in
 _save_table
     results = self._do_insert(
               ^^^^^^^^^^^^^^^^
   File "/path/to/django/django/db/models/base.py", line 1201, in
 _do_insert
     return manager._insert(
            ^^^^^^^^^^^^^^^^
   File "/path/to/django/django/db/models/manager.py", line 87, in
 manager_method
     return getattr(self.get_queryset(), name)(*args, **kwargs)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/path/to/django/django/db/models/query.py", line 1828, in _insert
     return query.get_compiler(using=using).execute_sql(returning_fields)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/path/to/django/django/db/models/sql/compiler.py", line 1847, in
 execute_sql
     for sql, params in self.as_sql():
                        ^^^^^^^^^^^^^
   File "/path/to/django/django/db/models/sql/compiler.py", line 1770, in
 as_sql
     value_rows = [
                  ^
   File "/path/to/django/django/db/models/sql/compiler.py", line 1771, in
 <listcomp>
     [
   File "/path/to/django/django/db/models/sql/compiler.py", line 1772, in
 <listcomp>
     self.prepare_value(field, self.pre_save_val(field, obj))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/path/to/django/django/db/models/sql/compiler.py", line 1720, in
 pre_save_val
     return field.pre_save(obj, add=True)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   File "/path/to/django/django/db/models/fields/files.py", line 320, in
 pre_save
     if file.name is None and file._file is not None:
        ^^^^^^^^^
 AttributeError: 'DatabaseDefault' object has no attribute 'name'
 }}}
-- 
Ticket URL: <https://code.djangoproject.com/ticket/35657>
Django <https://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 unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/010701911cd9c47d-a17876bd-5506-46b9-a5b3-f88514dd894c-000000%40eu-central-1.amazonses.com.

Reply via email to