Уведомления

Группа в Telegram: @pythonsu

#1 Март 15, 2015 11:41:10

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество записей в категориях

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?

Офлайн

#2 Март 16, 2015 12:55:35

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество записей в категориях

помогите пожалуйста, нифига не выходит, даже с костылями

Офлайн

#3 Март 16, 2015 13:48:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Количество записей в категориях

Rebra4
помогите пожалуйста, нифига не выходит, даже с костылями
А зачем нужен modeltranslation для ForeignKey полей? Что-то я не могу сообразить, какой в этом смысл вообще/



Офлайн

#4 Март 16, 2015 17:04:28

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество записей в категориях

ну например:
Таблица подкатегорий для языка ru:
название_________________количество записей
подкатегория_1____________3
подкатегория_2____________5
подкатегория_3____________1

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

Общем это позволяет легко делать расчет количества записей в подкатегориях для разных языков и без напряга выводить информацию подкатегории с тем количеством записей, которое соответствует языку. Для поля option modeltranslation не нужен, то я случайно поставил. Да согласен, можно отказаться от применения modeltranslation для ForeignKey, если скажете, как без этого можно расчетать количество записей в подкатегориях, для разных языков.

Отредактировано Rebra4 (Март 16, 2015 17:06:48)

Офлайн

#5 Март 16, 2015 17:33:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Количество записей в категориях

А в чем проблема то?
У вас все языки переводов есть в 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)



Офлайн

#6 Март 16, 2015 18:13:24

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество записей в категориях

это все красиво но это не решение, даже не подсказка.
Нужно сделать {{category.knowledge_set.count}} только для всех языков, без перевода ForeignKey.

Отредактировано Rebra4 (Март 16, 2015 18:16:32)

Офлайн

#7 Март 16, 2015 18:22:38

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Количество записей в категориях

Rebra4
Нужно сделать {{category.knowledge_set.count}} только для всех языков, без перевода ForeignKey.
В смысле для всех языков? Хоть миллион у тебя будь языков, от этого количество записей в таблице не прибавится. Ты видел вообще, что modeltranslation делает с таблицей в бд?



Офлайн

#8 Март 16, 2015 18:37:20

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество записей в категориях

мне нужен счетчик количества записей, для которых есть перевод, например все записи которые были переведены на en, мне нужно их посчетать и глубоко наплевать на остальные записи типа ru ua. Общем счетчик для en ru en записей, в зависимости от текущего языка.

Отредактировано Rebra4 (Март 16, 2015 18:50:49)

Офлайн

#9 Март 16, 2015 18:49:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Количество записей в категориях

А так не работает, что ли?

Category.objects.filter(Q(name_category_en__isnull=True) | Q(name_category_en=""))



Офлайн

#10 Март 16, 2015 21:51:51

Rebra4
Зарегистрирован: 2012-06-30
Сообщения: 132
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество записей в категориях

d = CategoryGo.objects.get(id=id)
d=d.knowledge_set.filter(Q(name_post_en__isnull=True) | Q(name_post_en=""))
ещё немного подправить и будет работать, как я хотел, спасибо за подсказку

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version