Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Ensure that ModelSerializer fields are in same order than in DRF #1182

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
sliverc merged 4 commits into django-json-api:main from antoineauger:fix/sort-field-names
Oct 12, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test(ModelSerializer): add test_get_field_names
  • Loading branch information
antoineauger committed Oct 6, 2023
commit fad9c64f19d00bfef540eeb0fad51058e4e7b8bc
34 changes: 34 additions & 0 deletions tests/test_serializers.py
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import pytest
from django.db import models
from rest_framework.utils import model_meta

from rest_framework_json_api import serializers
from tests.models import DJAModel, ManyToManyTarget
Expand Down Expand Up @@ -50,3 +51,36 @@ class ReservedFieldNamesSerializer(serializers.Serializer):
"ReservedFieldNamesSerializer uses following reserved field name(s) which is "
"not allowed: meta, results"
)


def test_get_field_names():
class MyTestModel(DJAModel):
verified = models.BooleanField(default=False)
uuid = models.UUIDField()

class AnotherSerializer(serializers.Serializer):
ref_id = serializers.CharField()
reference_string = serializers.CharField()

class MyTestModelSerializer(AnotherSerializer, serializers.ModelSerializer):
an_extra_field = serializers.CharField()

class Meta:
model = MyTestModel
fields = "__all__"
extra_kwargs = {
"verified": {"read_only": True},
}

# Same logic than in DRF get_fields() method
declared_fields = MyTestModelSerializer._declared_fields
info = model_meta.get_field_info(MyTestModel)

assert MyTestModelSerializer().get_field_names(declared_fields, info) == [
"id",
"ref_id",
"reference_string",
"an_extra_field",
"verified",
"uuid",
]

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /