【问题标题】:filter django queryset by onetoone model field property通过 onetoone 模型字段属性过滤 django 查询集
【发布时间】:2021-09-27 08:18:00
【问题描述】:

我有两个模型类,它们通过 OneToOneField 相关,就像这里

class Book(models.Model):
      is_user_ok = models.BooleanFiled()
class Mybook(models.Model):
      book = models.OneToOneField( Book, related_name="Book", null=True, blank=True, on_delete=models.SET_NULL)

现在我想按书籍字段属性创建一个查询集过滤器。但这里book.is_user_ok 不能使用。我怎样才能使这个查询集过滤器?

queryset = Mybook.objects.filter(book.is_user_ok=True)

【问题讨论】:

    标签: python django django-models django-rest-framework drf-queryset


    【解决方案1】:

    您正在寻找一个常见问题,您真正想做的是过滤器中的related_name__column_name,您可以尝试

    queryset = Mybook.objects.filter(Books__is_user_ok=True=True)

    来自官方文档的参考: https://docs.djangoproject.com/en/3.2/topics/db/queries/

    双下划线用于连接,因为您已经在此处设置了模型各种连接中的关系,它根据模型关系使用。

    【讨论】:

      【解决方案2】:

      您使用了错误的语法。将(book.is_user_ok=True) 替换为(book__is_user_ok=True) 问题是,使用'.'代替 '__'。这是处理另一个模型类时的正确语法

      【讨论】:

        猜你喜欢
        • 2013-10-10
        • 1970-01-01
        • 1970-01-01
        • 2021-08-05
        • 1970-01-01
        • 2015-08-05
        • 2018-09-01
        • 2017-03-09
        • 2017-01-02
        相关资源
        最近更新 更多