| 12345678910111213141516171819202122232425262728293031323334 |
- from django.db import models
- from netbox.config import ConfigItem
- __all__ = (
- 'custom_deconstruct',
- )
- 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)
- # Ignore any field defaults which reference a ConfigItem
- kwargs = {
- k: v for k, v in kwargs.items() if not isinstance(v, ConfigItem)
- }
- return name, path, args, kwargs
|