Add dynamic nesting support to SerializedPKRelatedField

This commit is contained in:
Jeremy Stretch
2024-02-27 14:00:42 -05:00
parent c382ba0ae0
commit ca56c8b9ef
19 changed files with 137 additions and 111 deletions

View File

@@ -4,7 +4,6 @@ from netbox.api.fields import ChoiceField, SerializedPKRelatedField
from netbox.api.serializers import NetBoxModelSerializer
from vpn.choices import *
from vpn.models import IKEPolicy, IKEProposal, IPSecPolicy, IPSecProfile, IPSecProposal
from ..nested_serializers import *
__all__ = (
'IKEPolicySerializer',
@@ -54,7 +53,8 @@ class IKEPolicySerializer(NetBoxModelSerializer):
)
proposals = SerializedPKRelatedField(
queryset=IKEProposal.objects.all(),
serializer=NestedIKEProposalSerializer,
serializer=IKEProposalSerializer,
nested=True,
required=False,
many=True
)
@@ -94,7 +94,8 @@ class IPSecPolicySerializer(NetBoxModelSerializer):
)
proposals = SerializedPKRelatedField(
queryset=IPSecProposal.objects.all(),
serializer=NestedIPSecProposalSerializer,
serializer=IPSecProposalSerializer,
nested=True,
required=False,
many=True
)

View File

@@ -2,7 +2,7 @@ from django.contrib.contenttypes.models import ContentType
from drf_spectacular.utils import extend_schema_field
from rest_framework import serializers
from ipam.api.nested_serializers import NestedRouteTargetSerializer
from ipam.api.serializers_.vrfs import RouteTargetSerializer
from ipam.models import RouteTarget
from netbox.api.fields import ChoiceField, ContentTypeField, SerializedPKRelatedField
from netbox.api.serializers import NetBoxModelSerializer
@@ -23,13 +23,15 @@ class L2VPNSerializer(NetBoxModelSerializer):
type = ChoiceField(choices=L2VPNTypeChoices, required=False)
import_targets = SerializedPKRelatedField(
queryset=RouteTarget.objects.all(),
serializer=NestedRouteTargetSerializer,
serializer=RouteTargetSerializer,
nested=True,
required=False,
many=True
)
export_targets = SerializedPKRelatedField(
queryset=RouteTarget.objects.all(),
serializer=NestedRouteTargetSerializer,
serializer=RouteTargetSerializer,
nested=True,
required=False,
many=True
)