@@ -396,7 +396,6 @@ def get_model_field(self, field, **kwargs):
396
396
to_model = content_type .model
397
397
398
398
# Extract our custom parameters and keep only Django field parameters
399
- generating_models = kwargs .pop ('_generating_models' , getattr (self , '_generating_models' , set ()))
400
399
field_kwargs = {k : v for k , v in kwargs .items () if not k .startswith ('_' )}
401
400
field_kwargs .update ({"default" : field .default , "unique" : field .unique })
402
401
@@ -409,45 +408,20 @@ def get_model_field(self, field, **kwargs):
409
408
)
410
409
custom_object_type = CustomObjectType .objects .get (pk = custom_object_type_id )
411
410
412
- # Check if this is a self-referential field
413
- if custom_object_type .id == field .custom_object_type .id :
414
- # For self-referential fields, use LazyForeignKey to defer resolution
415
- model_name = f"{ APP_LABEL } .{ custom_object_type .get_table_model_name (custom_object_type .id )} "
416
- # Generate a unique related_name to prevent reverse accessor conflicts
417
- table_model_name = field .custom_object_type .get_table_model_name (field .custom_object_type .id ).lower ()
418
- related_name = f"{ table_model_name } _{ field .name } _set"
419
- f = LazyForeignKey (
420
- model_name ,
421
- null = True ,
422
- blank = True ,
423
- on_delete = models .CASCADE ,
424
- related_name = related_name ,
425
- ** field_kwargs
426
- )
427
- return f
428
- else :
429
- # For cross-referential fields, use skip_object_fields to avoid infinite loops
430
- # Check if we're in a recursion situation using the parameter or stored attribute
431
- if generating_models and custom_object_type .id in generating_models :
432
- # We're in a circular reference, don't call get_model() to prevent recursion
433
- # Use a string reference instead
434
- model_name = f"{ APP_LABEL } .{ custom_object_type .get_table_model_name (custom_object_type .id )} "
435
- # Generate a unique related_name to prevent reverse accessor conflicts
436
- table_model_name = field .custom_object_type .get_table_model_name (
437
- field .custom_object_type .id
438
- ).lower ()
439
- related_name = f"{ table_model_name } _{ field .name } _set"
440
- f = models .ForeignKey (
441
- model_name ,
442
- null = True ,
443
- blank = True ,
444
- on_delete = models .CASCADE ,
445
- related_name = related_name ,
446
- ** field_kwargs
447
- )
448
- return f
449
- else :
450
- model = custom_object_type .get_model (skip_object_fields = True )
411
+ # For self-referential fields, use LazyForeignKey to defer resolution
412
+ model_name = f"{ APP_LABEL } .{ custom_object_type .get_table_model_name (custom_object_type .id )} "
413
+ # Generate a unique related_name to prevent reverse accessor conflicts
414
+ table_model_name = field .custom_object_type .get_table_model_name (field .custom_object_type .id ).lower ()
415
+ related_name = f"{ table_model_name } _{ field .name } _set"
416
+ f = LazyForeignKey (
417
+ model_name ,
418
+ null = True ,
419
+ blank = True ,
420
+ on_delete = models .CASCADE ,
421
+ related_name = related_name ,
422
+ ** field_kwargs
423
+ )
424
+ return f
451
425
else :
452
426
# to_model = content_type.model_class()._meta.object_name
453
427
to_ct = f"{ content_type .app_label } .{ to_model } "
0 commit comments