Найти - Пользователи
Полная версия: Фильтр по пользовательскому полю в менеджере модели
Начало » Django » Фильтр по пользовательскому полю в менеджере модели
1
zillion
Есть модель данных и менеджер к ней. В менеджере несколько методов которые достают данные с определенными условиями. Эти данные и юзеры привязан к определенному городу. В менеджере необходимо учитывать город текущего пользователя или если пользователь не авторизирован то показывать со всех городов.

Может кто сталкивался с таким или подскажет как лучше реализовать?
FishHook
Слишком общее описание проблемы. Вообще не понятно, что конкретно у Вас не получается и какие связи между моделями. Покажите код и конкретизируйте вопрос.
zillion
Модель:
class Item(models.Model):
    user = models.ForeignKey(get_user_model())
    title = models.CharField(max_length=45)
    city = models.ForeignKey(City, default=0, related_name='items')
Менеджер:
class ItemManager(models.Manager):
    def upcoming(self):
        start_time = timezone.now()
        return self.filter(start_time__gte=start_time).order_by('start_time')

В менеджере несколько методов с разными условиями и в них также нужно добавить фильтр по городу для авторизированных пользователей, то есть в менеджере нужно получить объект user. Первое что пришло в голову это просто передавать вторым параметром user.
class ItemManager(models.Manager):
    def upcoming(self, user):
        start_time = timezone.now()
        if user.is_authenticated():
            return self.filter(city=user.city).filter(start_time__gte=start_time).order_by('start_time')
        return self.filter(start_time__gte=start_time).order_by('start_time')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB