Получить данные на основе категорий django - PullRequest
0 голосов
/ 29 января 2020

(Любое предложение будет высоко ценится). У меня есть модель статей, например

class Articles(models.Model):
    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE , blank=True, null=True)
    articlename = models.CharField(max_length=50, null=False, blank=False)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    category = models.ForeignKey(Categories, on_delete=models.CASCADE , blank=True, null=True)

. Теперь я хочу получить данные в виде, например, «Каждая категория будет иметь все статьи в виде объектов из базы данных».

например, у меня есть 2 статьи, 1 - это «article1 с cat1» и 2-й »article2 с cat2« Теперь я хочу получить такие данные data:[ cat1:[{article1},{}] , cat2:[{article2}] ] есть ли group by categories подобная вещь в django ?? до сих пор я пробовал этот код

order_article = OrderArticle.objects.filter(order__order_number=id ,order__restaurant=restid) 
        samearticle=[]
        for order_obj in order_article:
            if : #will check if article having cat already been created
                category={}
                category[order_obj.article.category.name]=order_obj
                samearticle.append(order_obj.article.category.name)
            else:
                samearticle[order_obj.article.category.name].append(order_obj)

Ответы [ 2 ]

2 голосов
/ 29 января 2020

def index(request, category_slug=None):
    category = None
    categories = Category.objects.all()
    articles = Article.objects.all()
    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        articles = articles.filter(category=categories)
    context = {
        'articles': articles,
        'categories': categories,
        'category': category,
    }

Тогда, на ваш взгляд

{% regroup articles by category as articles_by_category %}
  {% for c in products_by_category %}
  
  {% endfor %}
1 голос
/ 29 января 2020

Предполагается, что ваша модель категории имеет поле имени. Вы действительно можете l oop по категориям и получить все связанные статьи, используя ссылку на связанный объект

order_article_list = OrderArticle.objects.filter(order__order_number=id ,order__restaurant=restid) 
data = {}
for order_article in order_article_list:
  data[order_article.article.category.name] = order_article.article.category.articles_set.all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...