[英]Is this MySQL query equivalent to this Django query
这是 MySQL 查询吗
SELECT * from books WHERE ISBN = (SELECT isbn_id FROM userWishlist WHERE userid_id = request.user.id)
相当于这个 Django 查询?
q = userWishlist.objects.filter(userid_id = request.user.id).values('isbn_id')
return books.objects.filter(ISBN = q)
编辑:这是 userWishList 和 book 的模型
class books (models.Model):
ISBN = models.IntegerField(primary_key=True)
bookName = models.CharField(max_length=255)
bookVersion = models.CharField(max_length=255)
bookAuthor = models.CharField(max_length=255)
bookPublisher = models.CharField(max_length=255, default= 'NULL')
class wishlist (models.Model):
userid = models.ForeignKey(User, on_delete= models.CASCADE)
ISBN = models.ForeignKey(books, on_delete = models.CASCADE)
相当于这个 Django 查询?
没有。 Django 期望等价的单个值,但q
对象是值的QuerySet
。
此外,没有必要使用它。 您可以过滤:
books.objects.filter(wishlist__userid=request.user)
因此,这将列出所有存在wishlist
books
,其userid
为request.user
。
注:在Django模型都写在PerlCase,不snake_case,所以你可能想从模型重命名
来wishlist
Wishlist
。
注意:通常 Django 模型被赋予一个单数名称,所以
Book
而不是。books
注意:通常最好使用
settings.AUTH_USER_MODEL
[Django-doc]来引用用户模型,而不是直接使用User
模型 [Django-doc] 。 有关更多信息,您可以查看文档的引用User
模型部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.