Lösung, um die Logik in Django nicht zu teilen, um N+1 -Abfragen zu lösenPython

Python-Programme
Anonymous
 Lösung, um die Logik in Django nicht zu teilen, um N+1 -Abfragen zu lösen

Post by Anonymous »

Hier sind einige meiner Modelle: < /p>

Code: Select all

class CustomUser(AbstractUser):
def correct_date(self, date=None):
res = self.dates.order_by("date").all()
if not len(res):
return None
return res[len(res) - 1]

class Date(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name="dates")
date = models.DateField(auto_now_add=True)
Um N+1-Abfragen zu beheben Ich muss den Order_by in der Ansicht mit einem Vorab-Vorab :
extrahieren

Code: Select all

queryset = Project.objects.prefetch_related(
Prefetch(
"user__dates",
queryset=Date.objects.order_by('date')
),
)

und entfernen Sie die order_by in meiner Methode correct_date . Aber der Order_by befindet sich in einer anderen Datei. Dies könnte zu Problemen für diejenigen, die den Code danach verwenden. Correy_date Methode Wenn sie zuvor mit einem Order_by aufgerufen wurde, und einen Fehler werfen oder order_by anwenden, wenn es nicht

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post