Фильтр комментария

Добрый день,

У меня есть три модели , связанные с Афоризм, PERFIL, Puesto и от Джанго . db импортирует модели из django . вклад . auth . модели импорта AbstractUser из приложений . Теги . модели импорта Теги класс Puesto ( модели . Модель ): nombre_puesto = модели . CharField ( max_length = 50 ) etiquetas = модели , ManyToManyField ( теги , пусто = True ) def __str__ ( self ): return '{}' . format ( self . nombre_puesto ) класс Perfil ( AbstractUser ): nom_puesto = модели . ForeignKey ( Puesto , blank = True ) def __str__ ( self ): return '{}' . формат ( сам . имя пользователя ) . Модель Perfil наследуется от Abstractuser. К этой модели была добавлена ??дополнительная информация «puesto de trabajo (job)», которая создается в приведенной ниже модели.

models.py

class Tags(models.Model):
    nombre = models.CharField(max_length=20)

    def __str__(self):
        return '{}'.format(self.nombre)

класс ComentarioListar ( LoginRequiredMixin , ListView ): login_url = '/' redirect_field_name = 'redirigido' model = Comentario template_name = 'home / comentario_listar.html' def get_queryset ( self ): aa = Puesto . объектов . filter ( nombre_puesto = self . request . user . nom_puesto ) возвращает Comentario . объектов . exclude ( autor__id = self . request . user . id ) b = Perfil . объектов . фильтр ( nom_puesto = самостоятельно . запрос . Пользователь ) C = Puesto . объектов . filter ( nombre_puesto = b ) возвращает Comentario . объектов . filter ( tag__id = c ) создается в другом приложении, посмотрите:

models.py

Perfil.nom_puesto.etiquetas.all()

Кроме того, я создал еще одно приложение для создания комментариев, которые имеют возможность добавлять теги.

Цель состоит в том, чтобы показать комментарии, теги которых соответствуют тегу пользовательского профиля. Чтобы достичь этого:

views.py

Comentario

Это не работает, это безумие! кто-нибудь знает, как показывать только комментарии, которые соответствуют тегам пользователя?

Спасибо за ваш ответ!!!

django,python-3.x,django-views,many-to-many,

1

Ответов: 1


0

Теги данного пользователя можно найти в Comentario.

Для того, чтобы найти только Tagsобъекты , которые имеют тег общий с данным пользователем, предполагая , что tagsесть много-ко-многим отношения к Tagsназывается tags:

>> user_tags = request.user.nom_puesto.etiquetas.all()
>> matching_comments = Comentario.objects.filter(tags__in = user_tags).distinct()

Передача списка объектов для __inпреобразования их в первичные ключи под капотом; Затем Django создает набор запросов с Comentarioобъектом для каждого соответствия. Если пользователь и комментарий имеют несколько общих тегов, то вы увидите дубликаты результатов, следовательно, использование distinct().

Джанго, питон-3.x, Джанго-представления, многие-ко-многим,
Похожие вопросы
Яндекс.Метрика