Нет единого способа извлечения нескольких несвязанных моделей в одном QuerySet. Что вы можете сделать, это использовать наследование моделей, иметь базовую модель для всех моделей событий. Со следующей структурой модели:
class Event(models.Model):
timestamp = models.DateTimeField()
user = models.ForeignKey(User)
...
class WebhookSubscription(Event):
...
class WebhookEvent(Event):
...
class TokenRefresh(Event):
...
class LogEvent(Event):
...
Вы можете делать запросы напрямую, используя модель событий, например:
events = Event.objects.filter(user=user).order_by('timestamp')
Это даст вам экземпляры событий, которые не будут содержать данные для дочерних моделей. , Вы можете получить дочерний экземпляр от родителя точно так же, как и в случае с OneToOneField (вот как фактически django моделирует наследование, создавая две таблицы и связывая их внешним ключом):
event.webhooksubscription
event.webhookevent
event.tokenrefresh
event.logevent
Они будут возвращать экземпляры дочерней модели, если таковые существуют, и вызывают исключение ObjectNotFound , если у родителя нет связанного указанного экземпляра дочерней модели.
Этот подход позволил бы вам выполнять такие операции, как сортировка и нарезка на уровне базы данных, с недостатком дополнительной сложности модели (вам потребуется отдельный запрос для получения данных дочерней модели)
Чтобы выдать байт 0x12 (например), выполните:
asm __volatile__ (".byte 0x12");
Хотя вы можете получить неожиданные результаты при включенной оптимизации .