2

我有两个模型类,它们与 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)
4

2 回答 2

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/

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

于 2021-07-19T18:15:10.697 回答
1

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

于 2021-07-19T20:20:22.523 回答