假設我有一個 User 和 Order 模型。訂單有一個 fk 用戶。
做和做有什么區別
def getorders(request):
user = request.user
orders = user.order_set.all()
和
def getorders(request):
user = request.user
orders = Order.objects.filter(user=user)
兩者都會回傳相同的結果,不是嗎?
那么使用 _set 而不是 filter 有什么好處呢?
uj5u.com熱心網友回復:
兩者都會回傳相同的結果,不是嗎?
是的,兩者將導致相同的查詢。
那么使用
_set代替有filter什么好處呢?
您可以使用related_name=…[Django-doc]為關系指定不同的名稱,例如:
from django.conf import settings
from django.db import models
class Order(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name='orders'
)
在這種情況下,您可以通過以下方式訪問訂單:
user.orders.all()
這段代碼可以讀作“用戶的所有訂單”,這可能比撰寫像Order.objects.filter(user=user).
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/322272.html
上一篇:Django-序列化程式未設定ManyToManyField
下一篇:在自定義命令中將時間戳轉換為日期
