Как абстрагировать средство получения случайных данных для Django?

#django #django-models #random

#django #django-модели #Случайный

Вопрос:

у меня есть фрагмент кода для получения случайных данных из базы данных:

 def get_random_item(model,queryset,id_column_name): 
    max_id = getattr(model.objects.order_by('-%s'%id_column_name)[0],id_column_name)
    min_id = math.ceil((max_id-100000)*random.random())   100000
    return queryset.filter(**content_id**__gte=min_id)[0]
  

как вы можете видеть, я хочу абстрагировать функцию для любой модели, но я не знаю, как заменить «content_id», потому что это не строка или просто атрибут, а __gte.

спасибо за ваши ответы ~

Комментарии:

1. Вы же понимаете, что ваш код не может должным образом обрабатывать пробелы в PK, верно?

Ответ №1:

«Ярлык поиска pk»

Для удобства Django предоставляет pk ярлык поиска, который расшифровывается как «первичный ключ».

Ответ №2:

Вы можете попробовать queryset.filter(**{«%s__gte» % (имя_столбца,): min_id)

Вы можете прочитать больше об этом здесь