Issue with django.forms.fields.FilePathField() and callable path

31 views
Skip to first unread message

Chakib Benhabib

unread,
Nov 2, 2021, 9:18:07 AM11/2/21
to Django users
Hi,

First post here, so I don't know if it's the correct channel for this kind of issue.
Sorry if it's not.

Since v 3.0 we can set path attribute as a callable in a models.fields.FilePathField(),
as discussed here:

and documented here:

The commit adding this feature can be found here:

I have an issue when I try to use django.forms.fields.FilePathField()
https://github.com/django/django/blob/stable/3.2.x/django/forms/fields.py#L1095
In the case where path is defined as a callable, and os.scandir(self.path) is called (as showed in  l.1126).
I 'm facing this explicit error:
"scandir: path should be string, bytes, os.PathLike, integer or None, not function"

If I override self.path with a pre-check similar to what it was done for the added feature
it seems to solve this issue.

```
...
path = self.path() if callable(self.path) else self.path
for f in os.scandir(path):
...
```

I don't know if it's a bug or if I miss something using models.fields.FilePathField() and django.forms.fields.FilePathField()
Reply all
Reply to author
Forward
0 new messages