Как аннотировать только несколько экземпляров в наборе запросов? - PullRequest
0 голосов
/ 22 января 2020

Итак, у меня есть набор запросов из Post объектов. Я хочу аннотировать user_voted Post объекты, созданные указанным пользователем c. В конце я хочу отправить все Post объекты в шаблон, даже те, которые не отмечены user_voted. Как мне это сделать?

1 Ответ

1 голос
/ 22 января 2020

Слишком сложно.

Почему бы просто не запросить все объекты записей с аннотацией и (при необходимости) также связанного пользователя (или, возможно, другую аннотацию для управления отображением). В шаблоне условно отобразите {{obj.user_voted}}

{% for obj in object_list %}
  stuff...

  <td> {% if obj.user.name == display_user %} {{obj.user_voted}} {%endif} </td>

{% endfor %}

Вероятно, можно создать SQL с помощью Django ORM, чтобы оценить условия и установить аннотацию в нулевую строку, если пользователь ошибается. Не спрашивай меня как. Это будет включать в себя такие вещи, как F выражения и Case и Cast. Есть место для такого рода сложности, но я сомневаюсь, что это так.

Иногда легче выполнить логи c того, отображать ли что-то в Python как метод свойства модели, чем в шаблоне.

@property
def display_user_voted(self)
   return ... if ... else ''

{{ obj.display_user_voted }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...