Files
backend-v1/core/apps/evaluation/serializers/reference/ReferenceItem.py
Husanjonazamov 3798037240 feat: add ReferenceItem model and update QuickEvaluation FKs
- 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
2026-03-09 16:04:15 +05:00

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",
]