- Create ReferenceitemModel with type, name, parent (self FK), order, is_active fields - Add ReferenceType choices: brand, marka, color, fuel_type, body_type, car_position, state_car - Implement ReferenceItem API (list, retrieve) with filter by type/parent/is_active, search, ordering - Add ReferenceItem admin with list_filter, search, inline editing - Change QuickEvaluation FK fields from shared.OptionsModel to evaluation.ReferenceitemModel - Update serializers and views to use .name instead of .key - Add ReferenceItem to unfold admin navigation
49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
from rest_framework import serializers
|
|
|
|
from core.apps.evaluation.models import ReferenceitemModel
|
|
|
|
|
|
class BaseReferenceitemSerializer(serializers.ModelSerializer):
|
|
type_display = serializers.CharField(source="get_type_display", read_only=True)
|
|
parent_name = serializers.CharField(source="parent.name", read_only=True, default=None)
|
|
|
|
class Meta:
|
|
model = ReferenceitemModel
|
|
fields = [
|
|
"id",
|
|
"type",
|
|
"type_display",
|
|
"name",
|
|
"parent",
|
|
"parent_name",
|
|
"order",
|
|
"is_active",
|
|
]
|
|
|
|
|
|
class ListReferenceitemSerializer(BaseReferenceitemSerializer):
|
|
class Meta(BaseReferenceitemSerializer.Meta):
|
|
pass
|
|
|
|
|
|
class RetrieveReferenceitemSerializer(BaseReferenceitemSerializer):
|
|
children = serializers.SerializerMethodField()
|
|
|
|
class Meta(BaseReferenceitemSerializer.Meta):
|
|
fields = BaseReferenceitemSerializer.Meta.fields + ["children"]
|
|
|
|
def get_children(self, obj):
|
|
children = obj.children.filter(is_active=True).order_by("order", "name")
|
|
return ListReferenceitemSerializer(children, many=True).data
|
|
|
|
|
|
class CreateReferenceitemSerializer(BaseReferenceitemSerializer):
|
|
class Meta(BaseReferenceitemSerializer.Meta):
|
|
fields = [
|
|
"type",
|
|
"name",
|
|
"parent",
|
|
"order",
|
|
"is_active",
|
|
]
|