Adding TrackerField to model makes django-extensions list_signals crash
jlandercy opened this issue · 0 comments
Problem
Dear JazzBand,
I just discovered this package and I was happy to find the TrackerField
object which definitely brings a lot of value for cleaning and checking logics.
I have some CI quality flow running on my projects and unfortunately using this object in my model breaks this check from django-extensions
:
python manage.py list_signals
With the following trace:
Traceback (most recent call last):
File ".\project\manage.py", line 29, in <module>
main()
File ".\project\manage.py", line 25, in main
execute_from_command_line(sys.argv)
File ".\lib\site-packages\django\core\management\__init__.py", line 401, in execute_from_command_line
utility.execute()
File ".\lib\site-packages\django\core\management\__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File ".\lib\site-packages\django\core\management\base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File ".\lib\site-packages\django\core\management\base.py", line 371, in execute
output = self.handle(*args, **options)
File ".\Python\Python39\site-packages\django_extensions-3.1.3-py3.9.egg\django_extensions\management\commands\list_signals.py", line 65, in han
dle
verbose_name = force_str(key._meta.verbose_name)
AttributeError: 'str' object has no attribute '_meta'
I can see the problem occurs on the django-extensions
package, so it might not be the right place to raise this issue.
Anyway, I was surprised to not need to migrate my schema once I have added the TrackerField
so my first guess is that issue is somehow related with the fact that the TrackerField
is not a full fledged field because it does not have any _meta
registered.
I raise this issue to keep a track of it and gently raise your attention on it (maybe you have some useful input to add).
At this stage I am not sure if it is something missing at the TrackerField
object or if the list_signals
feature should be more careful on fields he wants to extract meta.
Once I have found a solution, I'll update this issue.
Feel free to add your observations.
Thank you anyway.
Environment
- Django Model Utils version:
django-model-utils==4.2.0
- Django version:
django==3.2.5
- Python version:
Python 3.9.7
- Other libraries used, if any:
django-extensions==3.1.3
Tested on several environments and OS.
Code examples
Add a simple tracker on a model:
# models.py
from django.db import models
from model_utils import FieldTracker
class Dummy(models.Model):
# ...
tracker = FieldTracker()
Run the list_signals
on the project:
python manage.py list_signals