Форум сайта python.su
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)) ##########################################################################################
{% 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 %}
################################################################################# #Категории 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='Категории') #################################################################################
Офлайн
помогите пожалуйста, нифига не выходит, даже с костылями
Офлайн
Rebra4А зачем нужен modeltranslation для ForeignKey полей? Что-то я не могу сообразить, какой в этом смысл вообще/
помогите пожалуйста, нифига не выходит, даже с костылями
Офлайн
ну например:
Таблица подкатегорий для языка ru:
название_________________количество записей
подкатегория_1____________3
подкатегория_2____________5
подкатегория_3____________1
Если переключить язык
Таблица подкатегорий для языка en:
название_________________количество записей
подкатегория_1____________2
подкатегория_2____________1
подкатегория_3____________0
Общем это позволяет легко делать расчет количества записей в подкатегориях для разных языков и без напряга выводить информацию подкатегории с тем количеством записей, которое соответствует языку. Для поля option modeltranslation не нужен, то я случайно поставил. Да согласен, можно отказаться от применения modeltranslation для ForeignKey, если скажете, как без этого можно расчетать количество записей в подкатегориях, для разных языков.
Отредактировано Rebra4 (Март 16, 2015 17:06:48)
Офлайн
А в чем проблема то?
У вас все языки переводов есть в 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)
Офлайн
это все красиво но это не решение, даже не подсказка.
Нужно сделать {{category.knowledge_set.count}} только для всех языков, без перевода ForeignKey.
Отредактировано Rebra4 (Март 16, 2015 18:16:32)
Офлайн
Rebra4В смысле для всех языков? Хоть миллион у тебя будь языков, от этого количество записей в таблице не прибавится. Ты видел вообще, что modeltranslation делает с таблицей в бд?
Нужно сделать {{category.knowledge_set.count}} только для всех языков, без перевода ForeignKey.
Офлайн
мне нужен счетчик количества записей, для которых есть перевод, например все записи которые были переведены на en, мне нужно их посчетать и глубоко наплевать на остальные записи типа ru ua. Общем счетчик для en ru en записей, в зависимости от текущего языка.
Отредактировано Rebra4 (Март 16, 2015 18:50:49)
Офлайн
А так не работает, что ли?
Category.objects.filter(Q(name_category_en__isnull=True) | Q(name_category_en=""))
Офлайн
d = CategoryGo.objects.get(id=id) d=d.knowledge_set.filter(Q(name_post_en__isnull=True) | Q(name_post_en=""))
Офлайн