nested_serializers.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from rest_framework import serializers
  2. from core.choices import JobStatusChoices
  3. from core.models import *
  4. from netbox.api.fields import ChoiceField
  5. from netbox.api.serializers import WritableNestedSerializer
  6. from users.api.serializers import UserSerializer
  7. __all__ = (
  8. 'NestedDataFileSerializer',
  9. 'NestedDataSourceSerializer',
  10. 'NestedJobSerializer',
  11. )
  12. class NestedDataSourceSerializer(WritableNestedSerializer):
  13. url = serializers.HyperlinkedIdentityField(view_name='core-api:datasource-detail')
  14. class Meta:
  15. model = DataSource
  16. fields = ['id', 'url', 'display', 'name']
  17. class NestedDataFileSerializer(WritableNestedSerializer):
  18. url = serializers.HyperlinkedIdentityField(view_name='core-api:datafile-detail')
  19. class Meta:
  20. model = DataFile
  21. fields = ['id', 'url', 'display', 'path']
  22. class NestedJobSerializer(serializers.ModelSerializer):
  23. url = serializers.HyperlinkedIdentityField(view_name='core-api:job-detail')
  24. status = ChoiceField(choices=JobStatusChoices)
  25. user = UserSerializer(
  26. nested=True,
  27. read_only=True
  28. )
  29. class Meta:
  30. model = Job
  31. fields = ['url', 'created', 'completed', 'user', 'status']