diff --git a/apps/authentication/api/v1/serializers/serializer.py b/apps/authentication/api/v1/serializers/serializer.py index 3fa1830..8587c74 100644 --- a/apps/authentication/api/v1/serializers/serializer.py +++ b/apps/authentication/api/v1/serializers/serializer.py @@ -203,12 +203,22 @@ class OrganizationTypeSerializer(serializers.ModelSerializer): model = OrganizationType fields = [ 'id', + 'parent', 'key', 'name', 'org_type_field', 'is_repeatable' ] + def to_representation(self, instance): + representation = super().to_representation(instance) + + if instance.parent: + representation['parent'] = { + 'name': instance.parent.name, + 'id': instance.parent.id + } + class OrganizationSerializer(serializers.ModelSerializer): """ Serialize organization data """ diff --git a/apps/authentication/migrations/0047_organizationtype_parent.py b/apps/authentication/migrations/0047_organizationtype_parent.py new file mode 100644 index 0000000..a0f0956 --- /dev/null +++ b/apps/authentication/migrations/0047_organizationtype_parent.py @@ -0,0 +1,19 @@ +# Generated by Django 5.0 on 2025-11-04 07:50 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('authentication', '0046_alter_organization_address'), + ] + + operations = [ + migrations.AddField( + model_name='organizationtype', + name='parent', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='authentication.organizationtype'), + ), + ] diff --git a/apps/authentication/models.py b/apps/authentication/models.py index d94aed7..a1573f3 100644 --- a/apps/authentication/models.py +++ b/apps/authentication/models.py @@ -82,6 +82,12 @@ class OrganizationType(BaseModel): ('CO', 'Cooperative'), ('CMP', 'Companies') ) + parent = models.ForeignKey( + 'self', + on_delete=models.CASCADE, + related_name='children', + null=True + ) key = models.CharField(choices=organization_keys, default='EMP', max_length=3) name = models.CharField(max_length=50, unique=True, null=True) code = models.IntegerField(default=0)