Как я могу узнать, что экземпляр модели был создан экземпляром дочерней модели? - PullRequest
2 голосов
/ 15 октября 2010

У меня есть модель Child, унаследованная от (не абстрактной) модели Parent. Для данного экземпляра родительского объекта Parent, как я могу узнать, что это Child?

Если это так,

parent.child

возвращает дочерний элемент, но в противном случае он возвращает исключение DoesNotExist.

Является ли попытка / исключение единственным способом проверить это?

Спасибо

1012 * июль * # РЕДАКТИРОВАТЬ

Я только что нашел тот же вопрос здесь: Различение детей родительской модели с наследованием Джанго .

И ответ ...

hasattr(parent, 'child')

Ответы [ 3 ]

0 голосов
/ 15 октября 2010

Является ли попытка / исключение единственным способом проверить это?

Больше или меньше.

Если вы хотите только проверку существования, вы можете избежать исключениясказав Child.objects.filter(parent=parent).exists(), но если вы хотите что-то сделать с ребенком, если он существует, лучше просто получить к нему прямой доступ и обработать DoesNotExist.

0 голосов
/ 15 октября 2010

Я только что нашел тот же вопрос здесь: Различение детей родительской модели с наследованием Джанго .

И ответ ....

hasattr(parent, 'child')
0 голосов
/ 15 октября 2010

Вы можете использовать instanceof(parent, Child).Он вернет True для экземпляров Child, False для экземпляров Parent.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...