我發出一個 POST 請求,將資料輸入到表中,但之后我做了一個 Get 并在這種情況下獲取舊資料
def get_queryset(self):
transaction.commit()
if self.action not in ['retrieve', 'list', 'create', 'selector']:
res = self.queryset.filter(is_editable=True)
else:
res = self.queryset
return res
最新資料)
def get_queryset(self):
transaction.commit()
if self.action not in ['retrieve', 'list', 'create', 'selector']:
res = self.queryset.filter(is_editable=True)
else:
res = Presence.objects.all()
return res
uj5u.com熱心網友回復:
QuerySets 快取值。這意味著如果您直接回傳self.queryset,它將運行一次查詢,并將值存盤在記憶體中。
如果添加.all(),則制作不帶快取的副本,從而強制進行新查詢。QuerySet
這就是為什么 aListView默認情況下有一個實作,它將回傳queryset.all(). 事實上,如果我們查看源代碼 [GitHub],我們會看到:
def get_queryset(self): """ Return the list of items for this view. The return value must be an iterable and may be an instance of `QuerySet` in which case `QuerySet` specific behavior will be enabled. """ if self.queryset is not None: queryset = self.queryset if isinstance(queryset, QuerySet): queryset = queryset.all() elif self.model is not None: queryset = self.model._default_manager.all() else: raise ImproperlyConfigured( "%(cls)s is missing a QuerySet. Define " "%(cls)s.model, %(cls)s.queryset, or override " "%(cls)s.get_queryset()." % { 'cls': self.__class__.__name__ } ) ordering = self.get_ordering() if ordering: if isinstance(ordering, str): ordering = (ordering,) queryset = queryset.order_by(*ordering) return queryset
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/409944.html
標籤:
上一篇:你如何向djangorestframeworkapi添加驗證
下一篇:DjangoRestFramework-loginview無效資料。需要一本字典,但得到了AnonymousUser
