На момент написания статьи это невозможно. A ManyToManyField
[Django-doc] имеет позиционный аргумент to
с:
class ManyToManyField(to, **options)
Отношение «многие ко многим». Требуется позиционный аргумент: класс, к которому относится модель , который работает точно так же, как и для
blockquote>ForeignKey
, включая рекурсивные и ленивые отношения.Это также может создать некоторую путаницу: что должно
mtm
возвращать дляsome_a.mtm.all()
? Все связанныеB
объекты? Кортежи объектовB
,C
иD
? Как следует называть обратные отношения?Это, однако, не означает, что вы не можете подражать таким отношениям. Вы можете сделать модель, которая действует как отношение. Фактически, если вы определите
ManyToManyField
, Django создаст таблицу, в которой будут храниться данные из этого отношения.Таким образом, мы можем определить такую модель как:
class ABCDRel(models.Model): a = models.ForeignKey(A, on_delete=models.CASCADE, related_name='mtm') b = models.ForeignKey(B, on_delete=models.CASCADE, related_name='mtm') c = models.ForeignKey(C, on_delete=models.CASCADE, related_name='mtm') d = models.ForeignKey(D, on_delete=models.CASCADE, related_name='mtm')
Затем мы можем, например, получить
QuerySet
всех связанныхABCDRelation
с:some_a.mtm.all()
Или вы может получить
QuerySet
всех связанныхB
объектов посредством этого отношения с:B.objects.filter(mtm__a=some_a)
Отношение может содержать дополнительные данные, но, по сути, таким образом хранит «кортежи» того, как объекты моделей связаны друг другу.
Таким образом, создается модель сущности-отношения, которая более или менее выглядит следующим образом:
SQL Server Express не идет с профилировщиком, но можно использовать SQL Server 2005/2008 Профилировщик Экспресса вместо этого.
Также удостоверьтесь, что "клиентские инструменты" выбраны в опциях установки. Однако, если SQL Studio Managment, 2008 существует затем, вероятно, что Вы установили специальный выпуск.
Management Studio->Tools->SQL Server Profiler.
Если он не установлен, смотрите эту ссылку