繁体   English   中英

这个 MySQL 查询是否等同于这个 Django 查询

[英]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 ,其useridrequest.user


:在Django模型都写在PerlCase,snake_case,所以你可能想从模型重命名wishlistWishlist


注意:通常 Django 模型被赋予一个单数名称,所以Book而不是books


注意:通常最好使用settings.AUTH_USER_MODEL [Django-doc]来引用用户模型,而不是直接使用User模型 [Django-doc] 有关更多信息,您可以查看文档引用User模型部分

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM