我是新来的django,并试图建立一个电子商务网站的实践。有一个Cart模型,它目前有一个ForeignKey到User。哪条路更有效率?
我应该创建一个UserProfile模型,它将一个购物车作为ForeignKey,还是应该保持这样呢?
我认为前者应该更快,因为当我将显示手推车给用户,它将必须搜索和过滤所有的车,如果我保持它是。但是,我正在看的教程正在设置它们的模型,其中Cart为用户提供了一个ForeignKey。
发布于 2021-06-29 13:10:37
我在注释中写了这篇文章,但结果却超过了允许的字符数。
回答你的问题:Can you explain how is it more efficient as it will have to search through all the carts to find the user's cart. Do websites with big database also have it set up like this?
是的,它们确实如此。如果将购物车作为FK添加到UserProfile中,那么它不应该更快,因为它只保存对cart实例的引用。您仍然必须转到购物车表并检索相关的行。您必须注意的是控制对数据库的查询数量。要跟踪这一点,您可以使用django-debug-toolbar,也可以使用shell调试它。
from django.db import connection
queries=connection.queries
print(f"QUERY: {len(queries)}")然后检查查询的长度及其详细信息,以便进行调试,并使其更快。此外,尽可能使用select_related和prefetch_related,这将大大减少查询的数量。
Django调试工具栏如下所示

当您单击SQL时,您将看到所有详细的查询,并能够看到重复的查询。
https://stackoverflow.com/questions/68174992
复制相似问题