Как в Django я могу показывать произвольно разные данные для каждого пользователя?

У меня есть система тегов в Django со следующей моделью;

class Data(models.Model):
    new = models.ChardField()
    is_tagged = models.BooleanField(default=False)

class Tag(models.Model):
    data = models.ForeignKey(Data,on_delete=models.CASCADE,related_name="data")
    status = models.CharField(verbose_name="New Status",max_length=10,null=True)

Статус тега имеет значения "положительный", "отрицательный" и "пропуск".

Имеется страница под названием "новые теги", на которую одновременно заходят около 100 пользователей.

Имеется 10000 данных, и пользователи будут заходить на страницу и просто нажимать "положительно", "отрицательно" и "пройти".

Я хочу показывать разные данные для каждого пользователя. Это не позволит пользователям не видеть одни и те же данные и помечать данные 2 раза.

Допустим, пользователь пометил новое сообщение как "позитивное". Если я отправлю новинку с random(), она может быть такой же у другого пользователя, к несчастью. И пользователь может пометить его как "пас". Этот статус сделает "Data" "is_tagged" False. Но другие пользователи отметили "положительно" раньше.

Как предотвратить одновременный просмотр пользователями одних и тех же данных?

Если вам нужно получить случайный объект, вы можете сделать что-то вроде:

import random 

all_object_ids = Data.objects.all().values_list('id', flat=True) # gets list of all object ids

random_id = random.choice(all_object_ids) # picks a random id from list

random_tag = Data.objects.get(id=random_id)
Вернуться на верх