Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#1266 resolving through tables defined as strings on m2m relations #1390

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

trumpet2012
Copy link
Contributor

@trumpet2012 trumpet2012 commented Sep 12, 2024

This PR adds support for ManyToMany fields to specify their through tables as strings. In the case of referencing models in the same app you can now do through="ModelName". If the model is in a different app you can do through="applabel.ModelName".

Description

This works similarly to how django handles resolving the through field normally on ManyToManyFields. We leverage the django provided lazy_related_operation to delay resolving the actual through model until the relevant models have been loaded and made available by django.

Related Issue

This addresses: #1266

Motivation and Context

Being able to define through tables as strings is crucial for supporting situations where importing the model class directly can lead to circular dependency issues.

How Has This Been Tested?

Unit tests and by implementing fork into a django project.

Screenshots (if appropriate):

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • I have run the pre-commit run command to format and lint.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • I have added my name and/or github handle to AUTHORS.rst
  • I have added my change to CHANGES.rst
  • All new and existing tests passed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant