mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Cache custom fields on instance prior to calling create()/update()
This commit is contained in:
@ -175,14 +175,14 @@ class CustomFieldModelSerializer(ValidatedModelSerializer):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
|
from django.db.models.query import QuerySet
|
||||||
custom_fields = validated_data.pop('custom_fields', None)
|
|
||||||
|
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
|
|
||||||
instance = super().create(validated_data)
|
instance = super().create(validated_data)
|
||||||
|
|
||||||
# Save custom fields
|
# Save custom fields
|
||||||
|
custom_fields = validated_data.get('custom_fields')
|
||||||
if custom_fields is not None:
|
if custom_fields is not None:
|
||||||
self._save_custom_fields(instance, custom_fields)
|
self._save_custom_fields(instance, custom_fields)
|
||||||
instance.custom_fields = custom_fields
|
instance.custom_fields = custom_fields
|
||||||
@ -191,10 +191,11 @@ class CustomFieldModelSerializer(ValidatedModelSerializer):
|
|||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
|
|
||||||
custom_fields = validated_data.pop('custom_fields', None)
|
|
||||||
|
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
|
|
||||||
|
custom_fields = validated_data.get('custom_fields')
|
||||||
|
instance._cf = custom_fields
|
||||||
|
|
||||||
instance = super().update(instance, validated_data)
|
instance = super().update(instance, validated_data)
|
||||||
|
|
||||||
# Save custom fields
|
# Save custom fields
|
||||||
|
@ -17,11 +17,14 @@ from extras.utils import FeatureQuery
|
|||||||
#
|
#
|
||||||
|
|
||||||
class CustomFieldModel(models.Model):
|
class CustomFieldModel(models.Model):
|
||||||
_cf = None
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
abstract = True
|
abstract = True
|
||||||
|
|
||||||
|
def __init__(self, *args, custom_fields=None, **kwargs):
|
||||||
|
self._cf = custom_fields
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
def cache_custom_fields(self):
|
def cache_custom_fields(self):
|
||||||
"""
|
"""
|
||||||
Cache all custom field values for this instance
|
Cache all custom field values for this instance
|
||||||
|
Reference in New Issue
Block a user