Файл политики аудита указывается при запуске apiserver:
Вы можете передать файл с политикой в kube-apiserver, используя флаг --audit-policy-file.
BLOCKQUOTE>
Я предложил бы, чтобы Вы использовали Образцовое наследование.
Создайте базовую модель, которая содержит дату и заголовок. Разделите на подклассы Msg1 и Msg2 от него, как описано. Сделайте все свои запросы (чтобы заполнить страницу) использование базовой модели и затем переключиться на производный тип в последний момент.
Действительно большая вещь о наследовании состоит в том, что django затем позволяет Вам использовать базовую модель во внешних ключах из других моделей, таким образом, можно подать целую более гибкую заявку. Под капотом это - просто таблица для базовой модели с таблицей на подмодель, содержащую непосредственные ключи.
"объедините эти два запроса в один запрос, отсортируйте его по дате и нумеруйте страницы его?"
Это - объединение SQL. Покиньте Django ORM и используйте объединение SQL. Это не блестяще быстро, потому что SQL должен создать временный результат, который это сортирует.
Создайте временный результат, который может быть отсортирован. Так как список имеет метод сортировки, необходимо будет объединить два результата в один список.
Запишите алгоритм слияния, который принимает два набора запроса, нумеруя страницы результаты.
Править. Вот алгоритм слияния.
def merge( qs1, qs2 ):
iqs1= iter(qs1)
iqs2= iter(qs2)
k1= iqs1.next()
k2= iqs2.next()
k1_data, k2_data = True, True
while k1_data or k2_data:
if not k2_data:
yield k1
try:
k1= iqs1.next()
except StopIteration:
k1_data= False
elif not k1_data:
yield k2
try:
k2= iqs2.next()
except StopIteration:
k2_data= False
elif k1.key <= k2.key:
yield k1
try:
k1= iqs1.next()
except StopIteration:
k1_data= False
elif k2.key < k1.key: # or define __cmp__.
yield k2
try:
k2= iqs2.next()
except StopIteration:
k2_data= False
else:
raise Exception( "Wow..." )
Можно свернуться в разбиении на страницы:
def paginate( qs1, qs2, start=0, size=20 ):
count= 0
for row in merge( qs1, qs2 ):
if start <= count < start+size:
yield row
count += 1
if count == start+size:
break