python - 如何在 Django 中过滤具有多对多关系的对象

标签 python django database

我是 Django 的新手,我正在尝试发现多对多关系。

我有一个与默认用户模型有多对多关系的词模型:

from django.db import models
from django.contrib.auth.models import User

class Word(models.Model):
    definition = models.CharField(max_length=350)
    turkish = models.CharField(max_length=50)
    english = models.CharField(max_length=50)
    users = models.ManyToManyField(User)

    def __str__(self):
        return self.english

    def summary(self):
        return self.definition[:50] + "..."

我有一个属于两个用户的示例词对象,我只希望这两个用户在他们的提要页面上看到这个词对象。下面的 View 函数应该如何修正?

from django.shortcuts import render
from django.contrib.auth.models import User

@login_required
def home(request):
    user = request.user 
    small = user.username.title()
    words = Word.objects.filter(??????) #order_by('-english')
    return render(request, 'intro.html', {'words': words, 'small' : small})

基本上,我想检查一个单词对象的用户列表是否包含授权用户,如果包含,该单词将从数据库中取出。我该如何编码?

最佳答案

我认为你应该能够做到

words = Word.objects.filter(users=user)

要检查多个用户,您可以执行以下操作

words = Word.objects.filter(users__in=[user1,user2])

看看 docs例如。

关于python - 如何在 Django 中过滤具有多对多关系的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43380001/

相关文章:

python - Django奇怪的模板条件渲染

python - docker中的ngrok无法连接到Django开发服务器

python - 将具有多个循环和逻辑的代码简化为查询集聚合

mysql - 编写 MySQL 查询的新手

Python 列表列表操作

python - PIP 包是否经过策划?安装它们安全吗?

python - 如何防止用户插入或更新某些列的值?

python - 序列化可选的嵌套结构 : Difference between QueryDict and normal dict?

mysql - 决定数据库表架构

Java 在单独的行上打印数据库记录