Найти - Пользователи
Полная версия: Количество записей в категориях
Начало » Django » Количество записей в категориях
1
Rebra4
views.py
#Подкатегории
def category_go(request,id):
	a=Category.objects.get(id=id)
	b=a.categorygo_set.all()
	return render_to_response('category_next.html',{'category_all':b},RequestContext(request))
##########################################################################################
category_next.html
{% extends "base.html" %}
{% load i18n %}
{% block content %}
<h3>Подкатегории</h3>
<div class="well well-sm">
<div class="table-responsive">
<table class="table">
<tbody>
<tr>
<td><ul style="color:gray; font-weight:bold">Имя:</ul></td>
<td>Кол.:</td>
</tr>
{% for category in category_all %}
{% if category.yes_category %}
<tr>
<td><ul style="color:gray; font-weight:bold">
<a href="{% url 'boom' category.id %}">{{category.name_category}}</a></ul></td>
<td>{{category.knowledge_set.count}}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}
models.py
#################################################################################
#Категории
class Category(models.Model):
  name_category=models.CharField(max_length=15,verbose_name='Name')
  def __unicode__(self):
    return self.name_category
#################################################################################
#Подкатегории
class CategoryGo(models.Model):
  option=models.ForeignKey(Category)
  name_category=models.CharField(max_length=15)
  def __unicode__(self):
    return self.name_category
#################################################################################
#Ключевая информация
class Knowledge(models.Model):
  name_category=models.ForeignKey('CategoryGo',verbose_name='Категории')
#################################################################################
Как можно сделать расчет количества записей в категории, для каждого языка, если modeltranslation не переводит в модели Knowledge поле name_category?
Rebra4
помогите пожалуйста, нифига не выходит, даже с костылями
FishHook
Rebra4
помогите пожалуйста, нифига не выходит, даже с костылями
А зачем нужен modeltranslation для ForeignKey полей? Что-то я не могу сообразить, какой в этом смысл вообще/
Rebra4
ну например:
Таблица подкатегорий для языка ru:
название_________________количество записей
подкатегория_1____________3
подкатегория_2____________5
подкатегория_3____________1

Если переключить язык
Таблица подкатегорий для языка en:
название_________________количество записей
подкатегория_1____________2
подкатегория_2____________1
подкатегория_3____________0

Общем это позволяет легко делать расчет количества записей в подкатегориях для разных языков и без напряга выводить информацию подкатегории с тем количеством записей, которое соответствует языку. Для поля option modeltranslation не нужен, то я случайно поставил. Да согласен, можно отказаться от применения modeltranslation для ForeignKey, если скажете, как без этого можно расчетать количество записей в подкатегориях, для разных языков.
FishHook
А в чем проблема то?
У вас все языки переводов есть в settings
from django.conf import settings
languages = settings.LANGUAGES
# Я не помню в каком виде хранятся языки, допустим languages = ["ru", "en", "fr"]
instance = model.objects.get(pk=1)
for l in languages:
    print getattr(instance, "field_" + l)
Rebra4
это все красиво но это не решение, даже не подсказка.
Нужно сделать {{category.knowledge_set.count}} только для всех языков, без перевода ForeignKey.
FishHook
Rebra4
Нужно сделать {{category.knowledge_set.count}} только для всех языков, без перевода ForeignKey.
В смысле для всех языков? Хоть миллион у тебя будь языков, от этого количество записей в таблице не прибавится. Ты видел вообще, что modeltranslation делает с таблицей в бд?
Rebra4
мне нужен счетчик количества записей, для которых есть перевод, например все записи которые были переведены на en, мне нужно их посчетать и глубоко наплевать на остальные записи типа ru ua. Общем счетчик для en ru en записей, в зависимости от текущего языка.
FishHook
А так не работает, что ли?
Category.objects.filter(Q(name_category_en__isnull=True) | Q(name_category_en=""))
Rebra4
d = CategoryGo.objects.get(id=id)
d=d.knowledge_set.filter(Q(name_post_en__isnull=True) | Q(name_post_en=""))
ещё немного подправить и будет работать, как я хотел, спасибо за подсказку
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB