如何从视图中的查询集中选择OneTONE字段?

2024-04-28 11:32:32 发布

您现在位置:Python中文网/ 问答频道 /正文

查看所有用户(未启用搜索隐藏)视图

@login_required
def users(request):
    """List all users page"""
    t_users = User.objects.all()
    users = t_users.usersettings.filter(search_hidden=False).select_related('user')

    context = {'users': users}
    return render(request, 'users/users.html', context)

用户设置模型

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver

class UserSettings(models.Model):
    """Stores the user's settings."""

    user = models.OneToOneField(User, related_name='usersettings', on_delete=models.CASCADE)
    public_profile = models.BooleanField(default=True)
    search_hidden = models.BooleanField(default=False)

    class Meta:
        verbose_name_plural = 'usersettings'

    def __str__(self):
        return f"{self.user}'s settings"

@receiver(post_save, sender=User)
def create_user_usersettings(sender, instance, created, **kwargs):
    if created:
        UserSettings.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_usersettings(sender, instance, **kwargs):
    instance.usersettings.save()

创建帐户时,所有用户都有一个与之关联的UserSettings模型。在我的视图中,我想选择所有禁用搜索隐藏功能的用户,但是我尝试的方法无效。每当请求页面时,都会显示错误'QuerySet' object has no attribute 'usersettings'。我可能需要选择每个用户并检索设置,但我不知道如何高效地执行


Tags: djangoinstance用户fromimportmodelssavedef
1条回答
网友
1楼 · 发布于 2024-04-28 11:32:32

iliya评论说,使用t_users.objects.filter(search_hidden=False)进行过滤将返回用户设置对象中search_hidden不正确的用户

相关问题 更多 >