1- from django .db import models
21from django .contrib .postgres .fields import ArrayField
2+ from django .db import models
3+
34
45class PairedFieldDescriptor :
56 """
@@ -8,28 +9,22 @@ class PairedFieldDescriptor:
89 - ML field must be set explicitly
910 - Getting the main field returns manual if present, otherwise ML
1011 """
11-
12+
1213 def __init__ (self , field_name , field_type , switch , verbose_name = "" ):
1314 self .field_name = field_name
1415 self .manual_field_name = f"{ field_name } _manual"
1516 self .ml_field_name = f"{ field_name } _ml"
1617 self .field_type = field_type
17- self .verbose_name = verbose_name or field_name .replace ('_' , ' ' ).title ()
18+ self .verbose_name = verbose_name or field_name .replace ("_" , " " ).title ()
1819 self .switch = switch
1920
2021 def contribute_to_class (self , cls , name ):
2122 """Called by Django when the descriptor is added to the model class."""
2223 # Create manual field
23- manual_field = self ._create_field (
24- verbose_name = f"{ self .verbose_name } Manual" ,
25- db_column = self .manual_field_name
26- )
27-
24+ manual_field = self ._create_field (verbose_name = f"{ self .verbose_name } Manual" , db_column = self .manual_field_name )
25+
2826 # Create ML field
29- ml_field = self ._create_field (
30- verbose_name = f"{ self .verbose_name } ML" ,
31- db_column = self .ml_field_name
32- )
27+ ml_field = self ._create_field (verbose_name = f"{ self .verbose_name } ML" , db_column = self .ml_field_name )
3328
3429 # Add fields to the model's _meta
3530 cls .add_to_class (self .manual_field_name , manual_field )
@@ -46,10 +41,10 @@ def _create_field(self, verbose_name, db_column):
4641 else :
4742 # If field_type is already an instance, clone it
4843 field = self .field_type .clone ()
49-
44+
5045 field .verbose_name = verbose_name
5146 field .db_column = db_column
52-
47+
5348 return field
5449
5550 def __get__ (self , instance , owner ):
@@ -61,13 +56,13 @@ def __get__(self, instance, owner):
6156 """
6257 if instance is None :
6358 return self
64-
65- if not getattr (instance , self .switch , False ):
59+
60+ if not getattr (instance , self .switch , False ):
6661 return None
6762
6863 manual_value = getattr (instance , self .manual_field_name , None )
6964 ml_value = getattr (instance , self .ml_field_name , None )
70-
65+
7166 # Return manual if it exists, otherwise ML
7267 return manual_value if manual_value is not None else ml_value
7368
@@ -88,4 +83,4 @@ def __delete__(self, instance):
8883 def set_ml (self , instance , value ):
8984 """Explicit method to set ML tags"""
9085 if getattr (instance , self .switch , False ):
91- setattr (instance , self .ml_field_name , value )
86+ setattr (instance , self .ml_field_name , value )
0 commit comments