mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Closes #2359: Implement custom makemigrations command to ignore extraneous field attributes
This commit is contained in:
0
netbox/utilities/management/__init__.py
Normal file
0
netbox/utilities/management/__init__.py
Normal file
0
netbox/utilities/management/commands/__init__.py
Normal file
0
netbox/utilities/management/commands/__init__.py
Normal file
32
netbox/utilities/management/commands/makemigrations.py
Normal file
32
netbox/utilities/management/commands/makemigrations.py
Normal file
@ -0,0 +1,32 @@
|
||||
from django.core.management.commands.makemigrations import Command
|
||||
from django.db import models
|
||||
|
||||
|
||||
EXEMPT_ATTRS = [
|
||||
'choices',
|
||||
'help_text',
|
||||
'verbose_name',
|
||||
]
|
||||
|
||||
_deconstruct = models.Field.deconstruct
|
||||
|
||||
|
||||
def custom_deconstruct(field):
|
||||
"""
|
||||
Imitate the behavior of the stock deconstruct() method, but ignore the field attributes listed above.
|
||||
"""
|
||||
name, path, args, kwargs = _deconstruct(field)
|
||||
|
||||
# Remove any ignored attributes
|
||||
for attr in EXEMPT_ATTRS:
|
||||
kwargs.pop(attr, None)
|
||||
|
||||
# A hack to accommodate TimeZoneField, which employs a custom deconstructor to check whether the default choices
|
||||
# have changed
|
||||
if hasattr(field, 'CHOICES'):
|
||||
kwargs['choices'] = field.CHOICES
|
||||
|
||||
return name, path, args, kwargs
|
||||
|
||||
|
||||
models.Field.deconstruct = custom_deconstruct
|
Reference in New Issue
Block a user