скажем, у нас есть модели:
from django.db import models
class AutomaticModel(models.Model):
others = models.ManyToManyField('OtherModel')
class ManualModel(models.Model):
others = models.ManyToManyField('OtherModel', through='ThroughModel')
class OtherModel(models.Model):
pass
class ThroughModel(models.Model):
pblm = models.ForeignKey('ManualModel')
other = models.ForeignKey('OtherModel')
После этого мы можем получить доступ к сквозным моделям через
AutomaticModel._meta.get_field('others').rel.through
и
ManualModel._meta.get_field('others').rel.through
Проблема:
Если задано либо AutomaticModel
, либо ManualModel
(или их поля 'others
'), как определить, была ли сквозная модель создана автоматически или вручную.
Конечно, за исключением проверки имен, но это не соответствует общему случаю - также проверка содержимого файла models.py также кажется немного подверженной ошибкам. И, кажется, ничего нет в реальных полях __dict__
или где-либо еще.
Есть какие-нибудь подсказки?