Update 2:
(После прочтения комментариев Op в) Я предлагаю добавить новую модель отслеживать последние представления. Назовите это LatestSubmission
.
class LatestSubmission(models.Model):
user = models.ForeignKey(User)
problem = models.ForeignKey(Problem)
submission = models.ForeignKey(Submission)
Вы можете либо
- переопределение
Submission.save()
создать/обновить запись в LatestSubmission
каждый раз, когда пользователь учитывает новое решение для задачи
- прикрепить функцию, которая делает то же самое к подходит signal.
такой, что LatestSubmission
будет содержать одну строку в каждой комбинации проблем-пользователей, указывающую на последнюю отправку проблемы для каждого пользователя. После того как вы это в месте, вы можете запустить один запрос:
LatestSubmission.objects.all().order_by('problem')
Update:
Поскольку OP опубликовал образец кода, решение теперь может быть изменен следующим образом:
for user in User.objects.all(): # Get all users
user.submission_set.latest('time') # Pick the latest submission based on time.
Оригинальный ответ
При отсутствии какой-либо даты/времени критерии для принятия решения о том, что является «старше» или «новее», вы можете использовать первичный ключ (id
) Submission
для «пренебрежения старыми».
for user in User.objects.all(): # Get all users
user.submission_set.latest('id') # Pick the latest submission by each user.
Что вы подразумеваете под «полем, в котором есть пользователь и проблема»? Вы говорите о моделях Django? Отправьте соответствующий код. –
Модели, как это: Проблема: название, вопрос Представление: проблема (ForeignKey), пользователь (ForeignKey), содержание пользователя: Аутентификация пользователя Давайте предположим, что p1, p2 две проблемы и u1, u2 являются два пользователя u1 имеет два представления s1, s2 для p1 и один (s3) для p2 и u2 имеют один для p1 (s4), два для p2 (s5, s6) Так что я хочу получить результат запроса так: s2, s3, s4, s6 т. Е. Пренебрегать старыми с той же проблемой пользователя s2, s3, – crodjer