Django 按登录用户的注释过滤器
下午好 我有三个模型相互链接,Perfil,Puesto和Tags。Perfil模型继承自Abstractuser。在该模型中添加了一个附加信息“puesto de trabajo(工作)”,该信息在如下所示的模型中创建 models.pyDjango 按登录用户的注释过滤器,django,python-3.x,django-views,many-to-many,Django,Python 3.x,Django Views,Many To Many,下午好 我有三个模型相互链接,Perfil,Puesto和Tags。Perfil模型继承自Abstractuser。在该模型中添加了一个附加信息“puesto de trabajo(工作)”,该信息在如下所示的模型中创建 models.py from django.db import models from django.contrib.auth.models import AbstractUser from apps.Tags.models import Tags class Puesto(
from django.db import models
from django.contrib.auth.models import AbstractUser
from apps.Tags.models import Tags
class Puesto(models.Model):
nombre_puesto = models.CharField(max_length=50)
etiquetas = models.ManyToManyField(Tags, blank = True)
def __str__(self):
return '{}'.format(self.nombre_puesto)
class Perfil(AbstractUser):
nom_puesto = models.ForeignKey(Puesto, blank = True)
def __str__(self):
return '{}'.format(self.username)
标记模型是在另一个应用程序中创建的,请参见:
models.py
class Tags(models.Model):
nombre = models.CharField(max_length=20)
def __str__(self):
return '{}'.format(self.nombre)
此外,我还创建了另一个应用程序来创建注释,它可以选择添加标记
目标是显示标记与用户配置文件标记匹配的注释。为了达到这一目标:
views.py
class ComentarioListar (LoginRequiredMixin,ListView):
login_url='/'
redirect_field_name='redirigido'
model = Comentario
template_name = 'home/comentario_listar.html'
def get_queryset(self):
aa=Puesto.objects.filter(nombre_puesto=self.request.user.nom_puesto)
return Comentario.objects.exclude(autor__id=self.request.user.id)
b=Perfil.objects.filter(nom_puesto=self.request.user)
c=Puesto.objects.filter(nombre_puesto=b)
return Comentario.objects.filter(tag__id=c)
这不管用,太疯狂了!有人知道如何只显示符合用户标签的注释吗
谢谢你的回答 可以在
Perfil.nom_puesto.etiquetas.all()
找到给定用户的标签
要仅查找与给定用户具有相同标记的Comentario
对象,假设Comentario
与名为标记的标记有多对多关系:
>> user_tags = request.user.nom_puesto.etiquetas.all()
>> matching_comments = Comentario.objects.filter(tags__in = user_tags).distinct()
将对象列表传递给
中的
\u将其转换为引擎盖下的主键;Django然后为每个匹配创建一个带有Comentario
对象的查询集。如果用户和注释有多个共同的标记,那么您将看到重复的结果,因此使用distinct()
可以在Perfil.nom_puesto.etiquetas.all()
找到给定用户的标签
要仅查找与给定用户具有相同标记的Comentario
对象,假设Comentario
与名为标记的标记有多对多关系:
>> user_tags = request.user.nom_puesto.etiquetas.all()
>> matching_comments = Comentario.objects.filter(tags__in = user_tags).distinct()
将对象列表传递给
中的
\u将其转换为引擎盖下的主键;Django然后为每个匹配创建一个带有Comentario
对象的查询集。如果用户和注释有多个共同的标记,那么您将看到重复的结果,因此使用distinct()
对不起,我找不到答案。如果你能帮助我,我将不胜感激。谢谢,对不起,我找不到答案。如果你能帮助我,我将不胜感激。非常感谢。