Я создаю приложение, связанное с игровыми достижениями, и хочу, чтобы для каждой игры отображалась страница со списком связанных достижений. Это сделано.
Однако я также хочу, чтобы каждый пользователь мог видеть в этом списке, какие достижения он выполнил.
Моя модель такая:
class Achievement(models.Model):
game = models.ForeignKey(Game)
...
class Game(models.Model):
...
class GameProfile(models.Model):
achievements = models.ManyToManyField(Achievement, through='Achieved')
...
class Achieved(models.Model):
profile = models.ForeignKey(GameProfile)
achievement = models.ForeignKey(Achievement)
curr_count = models.PositiveSmallIntegerField()
На странице шаблона игры я получаю все достижения для текущей игры через связь с моделью достижений (т.е. achievements = game.achievement_set.all
). Затем я делаю {% for ach in achievements %}
для них и выводю <li>
для каждого.
Если пользователь вошел в систему, я также хочу отобразить curr_count, связанный с достижением. Поэтому мне нужен список Достигнутых объектов для конкретного GameProfile (думайте о нем как о текущем пользователе).
Проблема в том, что я не могу сделать {% if ach in achieved %}
(где ach - это экземпляр достижения и достигнут достигнутый набор запросов), очевидно.
Я также думал, что смогу получить QuerySet с достижениями, которых достиг пользователь, но в нем отсутствует curr_count
, который я хочу отобразить.
Я думаю, что мне нужен какой-то список или словарь с достижениями пользователя, по которым я могу проверить, является ли конкретное достижение элементом, но который также будет содержать переменную curr_count. Другое решение может заключаться в том, чтобы каким-то образом добавить curr_count
в качестве поля к объекту QuerySet of Achievement (который будет тем, которого достиг пользователь).
Можете ли вы предложить, как сделать это в Django?