Принадлежность экземпляра в наследовании модели Django
Каким простейшим способом можно выяснить, принадлежит ли notification
к BaseNotification
или к ExtendedNotification
?
class User(models.Model):
pass
class BaseNotification(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='notifications')
class ExtendedNotification(BaseNotification):
pass
# usage
for notification in user.notifications.all():
# --> here <--
Вы можете отличить одно от другого, используя hasattr(notification, 'extendednotification')
. Вот пример его использования с циклом:
for notification in user.notifications.all():
if hasattr(notification, 'extendednotification'):
extended_notification = notification.extendednotification
# do stuff with the extended notification
else:
# do stuff with the base notification