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 ('?') `` `` Ordre aléatoire des objets --
[: 5] `` `Tranche du début au 5ème ([0] ~ [4]) du tableau
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) `` `Obtenir uniquement la valeur pk de chaque objet de la liste
`flat = True```, la liste des tapples" ([], [],) "sera renvoyée. --``` list (pks)
Puisqu'une liste de QuerySet est générée jusqu'au dernier, convertissez-la en liste pure --``` random.sample (pks_list, 5)
Sélectionnez 5 au hasard dans la liste des valeurs pk acquises --``` .filter (pk__in = pks_random)
`` Obtenez un objet avec 5 valeurs pk sélectionnées au hasardSi vous avez une manière plus intelligente d'écrire que les deux ci-dessus, veuillez nous le faire savoir dans les commentaires.
Recommended Posts