python - 带有Q和多个类别的django查询

标签 python django django-orm django-q

我有以下模型结构:

class Pizza(models.Model):
    name = models.CharField(max_length=50)
    shop = models.CharField(max_length=50)


class Topping(models.Model):
    name = models.CharField(max_length=50)
    pizza = models.ManyToManyField(Pizza)

我想找到所有带有火腿或奶酪或两者的比萨饼,这是标准的 django 方式吗?: 从 django.db.models 导入 Q

Pizza.objects.filter(Q(topping__name='ham') | Q(topping__name='cheese'))

如果我有一个浇头列表,我该如何编程?

['ham','cheese']

最佳答案

你可以用 dicts 和 **kwargs 做到这一点,但没有必要:使用 __in 更容易:

topping_list = ['ham', 'cheese']
Pizza.objects.filter(topping__name__in=topping_list)

关于python - 带有Q和多个类别的django查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104642/

相关文章:

python - 与 pandas 中的组一起操作

django - Wagtail 每页用户权限

python - Django 多对多查询和表查询

python -/_ah/queue/deferred 奇怪的导入错误

python - C函数执行在哪里停止

用于覆盖模型的 Django 设计模式

django - 如何根据另一个查询集计算相关的多对多对象的计数?

django - 切片后重新排序查询集

python - 如何将自定义 Django 用户模型注册到管理页面?

django - 在 mod_wsgi 上调试 Django 代码(如何访问 ['wsgi.errors' ])