feat: change EvaluationrequestModel fields from CharField to ForeignKey, such as value_determined, rate_goal, property_rights, form_ownership, and change the BaseEvaluationrequestSerializer fields

This commit is contained in:
xoliqberdiyev
2026-04-02 17:49:03 +05:00
parent 09862985e1
commit d5a132c75b
4 changed files with 98 additions and 14 deletions

View File

@@ -24,7 +24,7 @@ class EvaluationrequestAdmin(ModelAdmin):
"tex_passport", "tex_passport",
"user__phone", "user__phone",
) )
readonly_fields = ("user", "created_at", "updated_at") readonly_fields = ("created_at", "updated_at")
fieldsets = ( fieldsets = (
("Asosiy", { ("Asosiy", {
"fields": ( "fields": (

View File

@@ -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'),
),
]

View File

@@ -44,21 +44,37 @@ class EvaluationrequestModel(AbstractBaseModel):
blank=True, blank=True,
null=True, null=True,
) )
value_determined = models.CharField( value_determined = models.ForeignKey(
"evaluation.ReferenceitemModel",
verbose_name=_("value determined"), 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"), 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"), 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"), 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( worked_hours = models.IntegerField(
verbose_name=_("worked hours"), verbose_name=_("worked hours"),

View File

@@ -2,7 +2,8 @@ import re
from rest_framework import serializers 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): class BaseEvaluationrequestSerializer(serializers.ModelSerializer):
@@ -18,6 +19,10 @@ class BaseEvaluationrequestSerializer(serializers.ModelSerializer):
location = serializers.SerializerMethodField() location = serializers.SerializerMethodField()
location_name = serializers.CharField(required=False) 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: class Meta:
model = EvaluationrequestModel model = EvaluationrequestModel
@@ -88,18 +93,23 @@ class CreateEvaluationrequestSerializer(serializers.ModelSerializer):
allow_blank=True, 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: class Meta:
model = EvaluationrequestModel model = EvaluationrequestModel
fields = [ fields = [
"value_determined",
"rate_goal",
"property_rights",
"form_ownership",
"rate_type", "rate_type",
"object_type", "object_type",
"customer_inn_number", "customer_inn_number",
"owner_inn_number", "owner_inn_number",
"tex_passport", "tex_passport",
"value_determined",
"rate_goal",
"property_rights",
"form_ownership",
"worked_hours", "worked_hours",
"chassi", "chassi",
"need_delivering", "need_delivering",
@@ -139,6 +149,30 @@ class CreateEvaluationrequestSerializer(serializers.ModelSerializer):
{"chassi": "Yuk avtomobil uchun shassi raqami majburiy."} {"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 return attrs
def create(self, validated_data): def create(self, validated_data):