• Как вывести из модели связи с Foreign Key?

    winordie
    @winordie
    Лучшая документация -- исходники
    Snachala nado opredelit related_name dlya Vospitately.vospet_crushek
    class Vospitately(models.Model):
        fio = models.CharField(max_length=40)
        dolshnost = models.CharField(max_length=80, default='Должность..')
        image = models.ImageField()
        vospet_crushek = models.ForeignKey(Cruski', related_name='vospitately')
        def __str__(self):
            return self.fio

    Potom vo view mogno tak sdelat
    def kruzhki(request):
        q = Cruski.objects.all()
        return render(request,'krushki.html',{'kruzki':q})

    I nakonec v shablone pishem chto to po tipu takogo
    {% block kruzhki %}
    {% for krug in kruzki %}
    <p><b>{{ krug.name }}</b></p>
    {% for vospet in krug.vospitately.all %}
    <p> {{ vospet.fio }}</p>
    {% endfor %}
    <p>{{ krug.description }}</p>
    <p>{{ krug.price }}</p>
    {% endfor %}

    Vot i vse. Takim obrazom u nas vivoditsya krugki i vospitately kotorie v nis sostoyat.

    Kstati vam bi opredelitsya stoit kak pisat "кружки":
    - Cruski
    - vospet_crushek
    - kruzhki
    - kruzki
    - krushki.html
    Ответ написан
    3 комментария
  • Как вывести из модели связи с Foreign Key?

    scream4ik
    @scream4ik
    models.py
    class Cruski(models.Model):
        name = models.CharField(max_length=40)
        description = models.TextField(default='Описание кружка')
        price = models.IntegerField(default=0)
        def __str__(self):
            return self.name
    
    class Vospitately(models.Model):
        fio = models.CharField(max_length=40)
        dolshnost = models.CharField(max_length=80, default='Должность..')
        image = models.ImageField()
        vospet_crushek = models.ForeignKey(Cruski, related_name='vospitately')
        def __str__(self):
            return self.fio


    views.py
    def kruzhki(request):
        q = Cruski.objects.all()
        return render(request,'krushki.html',{'kruzki':q})


    template
    {% block kruzhki %}
    {% for krug in kruzki %}
        <p><b>{{ krug.name }}</b></p>
        {% for vospet in krug.vospitately.all %}
            <p> {{ vospet.fio }}</p>
        {% endfor %}
        <p>{{ krug.description }}</p>
        <p>{{ krug.price }}</p>
    {% endfor %}
    Ответ написан
    Комментировать
  • Почему django через раз показывает поле с бд?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Во вьюхе это
    question = Question.objects.filter(pk=1)
    замените на это
    question = Question.objects.get(pk=1)
    Когда делаете .filter(..) - вам возвращается список, который вы пытаетесь отобразить в шаблоне. А когда .get(...) - уже конкретный объект.
    Ответ написан
    4 комментария
  • NoReverseMatch?

    Для начала, надо внимательнее читать. Тут есть описание polls/urls.py, сравните со своими урлами.
    Ответ написан
    5 комментариев
  • Корректировка пагинации в django?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Для примера кусок из моего старого кода:
    <div class="page-nav">
        {% if paginator.page.has_previous %}
        <!-- Показывам кнопку со ссылкой, если есть предыдущая страница -->
        <a href="{% url 'newslines:show_page' paginator.page.previous_page_number %}">&lt;&nbsp; Вперед</a>
        {% else %}
        <!-- Показываем неактивную кнопку, если предыдущей страницы нет -->
        <span>&lt;&nbsp; Вперед</span>
        {% endif %}
        
        <!-- Прибавляем к номеру текущей страницы -4 (т.е. отнимаем 4) -->
        {% if paginator.page.number|add:'-4' > 0 %} 
        <!-- Если до текущей страницы есть больше 4 страниц, показываем многоточие -->
        <span class="ellipsis">...</span>
        {% endif %}
        
        {% if paginator.page.number|add:'-3' > 0 %}
        <!-- Если до текущей страницы есть ещё три страницы -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'-3' %}">{{ paginator.page.number|add:'-3' }}</a>
        {% endif %}
        {% if paginator.page.number|add:'-2' > 0 %}
        <!-- Если до текущей страницы есть ещё две страницы -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'-2' %}">{{ paginator.page.number|add:'-2' }}</a>
        {% endif %}
        {% if paginator.page.number|add:'-1' > 0 %}
        <!-- Если до текущей страницы есть ещё одна страница -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'-1' %}">{{ paginator.page.number|add:'-1' }}</a>
        {% endif %}
        
        <!-- Номер текущей страницы -->
        <span>{{ paginator.page.number }}</span>
        
        {% if paginator.page.number|add:'1' <= paginator.num_pages %}
        <!-- Если после текущей страницы есть ещё одна страница -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'1' %}">{{ paginator.page.number|add:'1' }}</a>
        {% endif %}
        {% if paginator.page.number|add:'2' <= paginator.num_pages %}
        <!-- Если после текущей страницы есть ещё две страницы -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'2' %}">{{ paginator.page.number|add:'2' }}</a>
        {% endif %}
        {% if paginator.page.number|add:'3' <= paginator.num_pages %}
        <!-- Если после текущей страницы есть ещё три страницы -->
        <a href="{% url 'newslines:show_page' paginator.page.number|add:'3' %}">{{ paginator.page.number|add:'3' }}</a>
        {% endif %}
        
        {% if paginator.page.number|add:'4' <= paginator.num_pages %}
        <!-- Если после текущей страницы есть ещё четыре страницы -->
        <span class="ellipsis">...</span>
        {% endif %}    
        
        {% if paginator.page.has_next %}
        <!-- Показывам кнопку со ссылкой, если есть следующая страница -->
        <a href="{% url 'newslines:show_page' paginator.page.next_page_number %}">Назад &nbsp;&gt;</a>
        {% else %}
        <!-- Если нет следующей страницы -->
        <span>Назад &nbsp;&gt;</span>
        {% endif %}
    </div>


    Получается вот такая пагинация ef086be9918f47099a2dc17857a32883.png
    Добавить элементы для первой и последней страницы не так тяжело, если надо.

    Либо можно воспользоваться этим рецептом.
    Ответ написан
    4 комментария