Принадлежность экземпляра в наследовании модели 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
Вернуться на верх