views.py
from django.views.generic import ListView
from .models import SampleModel
class SampleListView(ListView):
model = SampleModel
def get_queryset(self):
return SampleModel.objects.order_by('?')[:5]
-- .order_by ('?') `` `Zufällige Reihenfolge der Objekte --
[: 5] `` `Slice vom Anfang bis zum 5. ([0] ~ [4]) des Arrays
views.py
from django.views.generic import ListView
from .models import SampleModel
import random
class SampleListView(ListView):
model = SampleModel
def get_queryset(self):
pks = SampleModel.objects.values_list('pk', flat=True)
pks_list = list(pks)
pks_random = random.sample(pks_list, 5)
queryset = SampleModel.objects.filter(pk__in=pks_random)
return queryset
--``` .values_list ('pk', flat = True) `` `Liefert nur den pk-Wert jedes Objekts in der Liste
`flat = True``` angeben, wird die Liste der Tapples" ([], [],) "zurückgegeben. --``` list (pks)
Da eine Liste von QuerySet bis zum letzten generiert wird, konvertieren Sie sie in eine reine Liste --``` random.sample (pks_list, 5) ``
Wählen Sie 5 zufällig aus der Liste der erfassten pk-Werte aus
--``` .filter (pk__in = pks_random) `` `Holen Sie sich ein Objekt mit 5 zufällig ausgewählten pk-WertenWenn Sie eine intelligentere Schreibweise als die beiden oben genannten haben, teilen Sie uns dies bitte in den Kommentaren mit.
Recommended Posts