Je veux afficher les top_categories dans la page d'accueil. J'ai écrit la fonction top_categories pour lister les catégories qui ont le plus de produits. Mais j'ai écrit cette fonction dans Product Model. Je suis confus sur où devrais-je écrire ceci. Voici mon codeafficher le nombre et les catégories supérieures dans la page d'accueil
class Category(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(max_length=50, unique=True)
class Product(models.Model):
name = models.CharField(max_length=200, unique=True,
blank=False, null=False)
categories = models.ManyToManyField(Category, related_name='products')
def top_categories(self):
product = Product.objects.values('id').annotate(
categories_count=models.Count('categories')).order_by('-categories_count')
return product
def home(request):
categories = Category.objects.all()
companies = Company.objects.all()[:12]
context = {
'categories': categories,
'companies': companies
}
return render(request, 'company/home.html', context)
Maintenant, il y a une confusion, Dois-je mettre en œuvre la fonction de top_categories dans la catégorie modale ou la façon dont je fais est bien? Parce que le travail de montrer le contenu dans la page d'accueil est le rôle de la vue de la maison.
@milan, Cela devrait fonctionner correctement pour vous. Essayez-le et faites-moi savoir si vous rencontrez un problème. –
Merci pour votre solution, mais il dit qu'il n'y a pas de champ appelé «produit» – milan
@milan, Il devrait être 'products' au lieu de' product' coz de nom apparenté que vous avez utilisé. J'ai mis à jour ma réponse. Cela devrait fonctionner maintenant. Regarde. –