From d5a132c75b03d7a89252773e033e8af34b3eab3c Mon Sep 17 00:00:00 2001 From: xoliqberdiyev Date: Thu, 2 Apr 2026 17:49:03 +0500 Subject: [PATCH] feat: change EvaluationrequestModel fields from CharField to ForeignKey, such as value_determined, rate_goal, property_rights, form_ownership, and change the BaseEvaluationrequestSerializer fields --- core/apps/evaluation/admin/request.py | 2 +- ...ionrequestmodel_form_ownership_and_more.py | 34 ++++++++++++++ core/apps/evaluation/models/request.py | 32 ++++++++++---- .../serializers/request/EvaluationRequest.py | 44 ++++++++++++++++--- 4 files changed, 98 insertions(+), 14 deletions(-) create mode 100644 core/apps/evaluation/migrations/0025_alter_evaluationrequestmodel_form_ownership_and_more.py diff --git a/core/apps/evaluation/admin/request.py b/core/apps/evaluation/admin/request.py index 8a80579..21fa3e9 100644 --- a/core/apps/evaluation/admin/request.py +++ b/core/apps/evaluation/admin/request.py @@ -24,7 +24,7 @@ class EvaluationrequestAdmin(ModelAdmin): "tex_passport", "user__phone", ) - readonly_fields = ("user", "created_at", "updated_at") + readonly_fields = ("created_at", "updated_at") fieldsets = ( ("Asosiy", { "fields": ( diff --git a/core/apps/evaluation/migrations/0025_alter_evaluationrequestmodel_form_ownership_and_more.py b/core/apps/evaluation/migrations/0025_alter_evaluationrequestmodel_form_ownership_and_more.py new file mode 100644 index 0000000..685184b --- /dev/null +++ b/core/apps/evaluation/migrations/0025_alter_evaluationrequestmodel_form_ownership_and_more.py @@ -0,0 +1,34 @@ +# Generated by Django 5.2.7 on 2026-04-02 12:34 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('evaluation', '0024_add_history_indexes'), + ] + + operations = [ + migrations.AlterField( + model_name='evaluationrequestmodel', + name='form_ownership', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='evaluation_form_ownership_requests', to='evaluation.referenceitemmodel', verbose_name='form ownership'), + ), + migrations.AlterField( + model_name='evaluationrequestmodel', + name='property_rights', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='evaluation_property_rights_requests', to='evaluation.referenceitemmodel', verbose_name='property rights'), + ), + migrations.AlterField( + model_name='evaluationrequestmodel', + name='rate_goal', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='evaluation_rate_goal_requests', to='evaluation.referenceitemmodel', verbose_name='rate goal'), + ), + migrations.AlterField( + model_name='evaluationrequestmodel', + name='value_determined', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='evaluation_value_determined_requests', to='evaluation.referenceitemmodel', verbose_name='value determined'), + ), + ] diff --git a/core/apps/evaluation/models/request.py b/core/apps/evaluation/models/request.py index c5e8a61..2163ef9 100644 --- a/core/apps/evaluation/models/request.py +++ b/core/apps/evaluation/models/request.py @@ -44,21 +44,37 @@ class EvaluationrequestModel(AbstractBaseModel): blank=True, null=True, ) - value_determined = models.CharField( + value_determined = models.ForeignKey( + "evaluation.ReferenceitemModel", verbose_name=_("value determined"), - max_length=100, + related_name="evaluation_value_determined_requests", + on_delete=models.SET_NULL, + blank=True, + null=True, ) - rate_goal = models.CharField( + rate_goal = models.ForeignKey( + "evaluation.ReferenceitemModel", verbose_name=_("rate goal"), - max_length=100, + related_name="evaluation_rate_goal_requests", + on_delete=models.SET_NULL, + blank=True, + null=True, ) - property_rights = models.CharField( + property_rights = models.ForeignKey( + "evaluation.ReferenceitemModel", verbose_name=_("property rights"), - max_length=100, + related_name="evaluation_property_rights_requests", + on_delete=models.SET_NULL, + blank=True, + null=True, ) - form_ownership = models.CharField( + form_ownership = models.ForeignKey( + "evaluation.ReferenceitemModel", verbose_name=_("form ownership"), - max_length=100, + related_name="evaluation_form_ownership_requests", + on_delete=models.SET_NULL, + blank=True, + null=True, ) worked_hours = models.IntegerField( verbose_name=_("worked hours"), diff --git a/core/apps/evaluation/serializers/request/EvaluationRequest.py b/core/apps/evaluation/serializers/request/EvaluationRequest.py index 7a4dbe1..a463ee2 100644 --- a/core/apps/evaluation/serializers/request/EvaluationRequest.py +++ b/core/apps/evaluation/serializers/request/EvaluationRequest.py @@ -2,7 +2,8 @@ import re from rest_framework import serializers -from core.apps.evaluation.models import EvaluationrequestModel +from core.apps.evaluation.models import EvaluationrequestModel, ReferenceitemModel +from core.apps.evaluation.serializers.reference import ListReferenceitemSerializer class BaseEvaluationrequestSerializer(serializers.ModelSerializer): @@ -18,6 +19,10 @@ class BaseEvaluationrequestSerializer(serializers.ModelSerializer): location = serializers.SerializerMethodField() location_name = serializers.CharField(required=False) + value_determined = ListReferenceitemSerializer(read_only=True) + rate_goal = ListReferenceitemSerializer(read_only=True) + property_rights = ListReferenceitemSerializer(read_only=True) + form_ownership = ListReferenceitemSerializer(read_only=True) class Meta: model = EvaluationrequestModel @@ -88,18 +93,23 @@ class CreateEvaluationrequestSerializer(serializers.ModelSerializer): allow_blank=True, ) + value_determined = serializers.IntegerField(required=False, allow_null=True) + rate_goal = serializers.IntegerField(required=False, allow_null=True) + property_rights = serializers.IntegerField(required=False, allow_null=True) + form_ownership = serializers.IntegerField(required=False, allow_null=True) + class Meta: model = EvaluationrequestModel fields = [ + "value_determined", + "rate_goal", + "property_rights", + "form_ownership", "rate_type", "object_type", "customer_inn_number", "owner_inn_number", "tex_passport", - "value_determined", - "rate_goal", - "property_rights", - "form_ownership", "worked_hours", "chassi", "need_delivering", @@ -139,6 +149,30 @@ class CreateEvaluationrequestSerializer(serializers.ModelSerializer): {"chassi": "Yuk avtomobil uchun shassi raqami majburiy."} ) + if attrs.get("value_determined"): + if attrs.get("value_determined") not in ReferenceitemModel.objects.values_list("id", flat=True): + raise serializers.ValidationError( + {"value_determined": "Noto'g'ri qiymat aniqlandi."} + ) + + if attrs.get("rate_goal"): + if attrs.get("rate_goal") not in ReferenceitemModel.objects.values_list("id", flat=True): + raise serializers.ValidationError( + {"rate_goal": "Noto'g'ri qiymat aniqlandi."} + ) + + if attrs.get("property_rights"): + if attrs.get("property_rights") not in ReferenceitemModel.objects.values_list("id", flat=True): + raise serializers.ValidationError( + {"property_rights": "Noto'g'ri qiymat aniqlandi."} + ) + + if attrs.get("form_ownership"): + if attrs.get("form_ownership") not in ReferenceitemModel.objects.values_list("id", flat=True): + raise serializers.ValidationError( + {"form_ownership": "Noto'g'ri qiymat aniqlandi."} + ) + return attrs def create(self, validated_data):