J'ai un modèle qui représente les peintures que je présente sur mon site. Sur la page principale, j'aimerais en montrer quelques-unes : la plus récente, celle qui n'a pas été visitée depuis le plus longtemps, la plus populaire et une autre au hasard.
J'utilise Django 1.0.2.
Alors que les 3 premiers sont faciles à réaliser en utilisant les modèles de Django, le dernier (aléatoire) me pose quelques problèmes. Je peux bien sûr le coder dans ma vue, pour quelque chose comme ceci :
number_of_records = models.Painting.objects.count()
random_index = int(random.random()*number_of_records)+1
random_paint = models.Painting.get(pk = random_index)
Cela ne ressemble pas à quelque chose que j'aimerais avoir dans ma vue - cela fait entièrement partie de l'abstraction de la base de données et devrait être dans le modèle. De plus, ici je dois m'occuper des enregistrements supprimés (alors le nombre de tous les enregistrements ne me couvrira pas toutes les valeurs clés possibles) et probablement beaucoup d'autres choses.
Y a-t-il d'autres options pour le faire, de préférence dans l'abstraction du modèle ?
0 votes
La façon dont vous affichez les choses et les choses que vous affichez font partie du niveau "Vue" ou de la logique commerciale qui devrait aller dans le niveau "Contrôleur" de MVC, à mon avis.
0 votes
Dans Django, le contrôleur est la vue. docs.djangoproject.com/fr/dev/faq/general/
0 votes
Il devrait y avoir une fonction intégrée pour cela - une qui n'utilise pas
order_by('?')