Django unittest on_delete CASCADE - PullRequest
       0

Django unittest on_delete CASCADE

1 голос
/ 01 марта 2020

Я пишу тесты для приложения Django.

В настоящее время для проверки каскадного удаления я создаю экземпляры, удаляю родительский элемент и утверждаю, что дочерний элемент также удален.

Есть ли лучший способ сделать это, например, получить параметры, переданные в ForeignKey модели, используя _meta.get_field?

1 Ответ

0 голосов
/ 01 марта 2020

Вы можете получить список полей из модели с помощью Model._meta.get_fields(). Затем для каждого поля вы можете проверить, является ли оно ForeignKey (или OneToOneField, который является подклассом ForeignKey) с isinstance(field, ForeignKey), а затем получить атрибут field.on_delete, чтобы определить, что такое "родительский элемент". "будет делать с" потомком ", если он удален.

Таким образом, вы можете, например, получить имена полей, для которых ForeignKey имеет значение CASCADE с помощью:

[f.name
 for f in MyModel._meta.get_fields()
 if isinstance(f, ForeignKey) and <b>f.remote_field.on_delete is models.CASCADE</b>]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...