django-dynamic-models icon indicating copy to clipboard operation
django-dynamic-models copied to clipboard

Related managers not created properly if related model generated after parent model

Open rvinzent opened this issue 3 years ago • 0 comments

Steps to Reproduce

model_schema = ModelSchema.objects.create(name="SimpleModel")
related_model_schema = ModelSchema.objects.create(name="RelatedModel")

FieldSchema.objects.create(
    name="related",
    model_schema=model_schema,
    class_name="django.db.models.ForeignKey",
        kwargs={
            "to": another_model_schema.model_name,
            "on_delete": models.CASCADE,
            "related_name": "parent_objects",
        },
)
model = model_schema.as_model()
related_model = related_model_schema.as_model()

related_instance = related_model.objects.create()
model_instance = model.objects.create(related=related_instance)
related_instance.parent_objects

AttributeError: "parent_objects" does not exist

Workaround

Call related_model_schema.as_model() before `model_schema.as_model(). This works for some reason

rvinzent avatar Jul 03 '22 05:07 rvinzent