Issue with adding new category models and searching posts using it
Good afternoon! I have django application, on main(index) page i have posts, and there is side bar on that sidebar i have code for showing and searching posts in concrete category, (i copied it from tutorial, and teacher didnt showed how to work with that), now there is only 1 category that work succesfully (named just as "category"), i must add 2 new categories model, with same functionality, but with other models (datepublication and univercity)
here is base html (sidebar with functionality here)
{% load static %}
{% load women_tags %}
<!DOCTYPE html>
<html>
<head>
<title>{{title}}</title>
<link type="text/css" href="{% static 'women/css/styles.css' %}" rel="stylesheet" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="shortcut icon" href="{% static 'women/images/main.ico' %}" type="image/x-icon"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<table class="table-page" border=0 cellpadding="0" cellspacing="0">
<tr><td valign=top>
{% block mainmenu %}
<div class="header">
<ul id="mainmenu" class="mainmenu">
<li class="logo"><a href="{% url 'home' %}"><div class="logo"></div></a></li>
{% for m in menu %}
<li><a href="{% url m.url_name %}">{{m.title}}</a></li>
{% endfor %}
{% if request.user.is_authenticated %}
<li class="last"> {{user.username}} | <a href="{% url 'logout' %}">Выйти</a></li>
{% else %}
<li class="last"><a href="{% url 'register' %}">Регистрация</a> | <a href="{% url 'login' %}">Войти</a></li>
{% endif %}
</ul>
<div class="clear"></div>
</div>
{% endblock mainmenu %}
<table class="table-content" border=0 cellpadding="0" cellspacing="0">
<tr>
<!-- Sidebar слева -->
<td valign="top" class="left-chapters">
<ul id="leftchapters">
{% if cat_selected == 0 %}
<li class="selected">Все категории</li>
{% else %}
<li><a href="{% url 'home' %}">Все категории</a></li>
{% endif %}
{% for c in cats %}
{% if c.women__count > 0 %}
{% if c.pk == cat_selected %}
<li class="selected">{{c.name}}</li>
{% else %}
<li><a href="{{ c.get_absolute_url }}">{{c.name}}</a></li>
{% endif %}
{% endif %}
{% endfor %}
</ul>
</td>
<!-- Конец Sidebar'а -->
<td valign="top" class="content">
<!-- Хлебные крошки -->
{% block breadcrumbs %}
{% endblock %}
<!-- Блок контента -->
<div class="content-text">
{% block content %}
{% endblock %}
{% if page_obj.has_other_pages %}
<nav class="list-pages">
<ul>
{% if page_obj.has_previous %}
<li class="page-num">
<a href="?page={{ page_obj.previous_page_number }}"><</a>
</li>
{% endif %}
{% for p in paginator.page_range %}
{% if page_obj.number == p %}
<li class="page-num page-num-selected">{{ p }}</li>
{% elif p >= page_obj.number|add:-2 and p <= page_obj.number|add:2 %}
<li class="page-num">
<a href="?page={{ p }}">{{ p }}</a>
</li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li class="page-num">
<a href="?page={{ page_obj.next_page_number }}">></a>
</li>
{% endif %}
</ul>
</nav>
{% endif %}
</div>
<!-- Конец блока контента -->
</td></tr></table>
</td></tr>
<!-- Footer -->
<tr><td valign=top>
<div id="footer">
<p>© </p>
</div>
</td></tr></table>
<!-- Конец footer'а и страницы -->
</body>
</html>
here is index html
{% extends 'women/base.html' %}
{% block content %}
<ul class="list-articles">
{% for p in posts %}
<li>
<div class="article-panel">
<p class="first">Категория: {{p.cat}}</p>
<p class="last">Дата: {{p.time_update|date:"d-m-Y H:i:s"}}</p>
</div>
<div class="article-panel">
<p class="first">Университет: {{p.univercity}}</p>
</div>
<h2>{{p.title}}</h2>
{% autoescape on %}
{{p.content|linebreaks|truncatewords:50}}
{% endautoescape %}
<div class="clear"></div>
<p class="link-read-post"><a href="{{ p.get_absolute_url }}">Читать пост</a></p>
</li>
{% endfor %}
</ul>
{% endblock %}
here is models py (univercity and Yearp is copies of Category)
from django.db import models
from django.urls import reverse
from django.contrib.auth.models import User
class Women(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=255, verbose_name="Название объявления")
content = models.TextField(blank=True, verbose_name="Текст объявления")
contact = models.CharField(max_length=255, verbose_name="Контакты для связи)")
time_create = models.DateTimeField(auto_now_add=True, verbose_name="Время создания")
cat = models.ForeignKey('Category', on_delete=models.PROTECT, verbose_name="Категории")
university = models.ForeignKey('University', on_delete=models.PROTECT, verbose_name="Университет")
yearp = models.ForeignKey('Yearp', on_delete=models.PROTECT, verbose_name="Год публикации")
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
class Meta:
verbose_name = 'Обьявления'
verbose_name_plural = 'Обьявления'
ordering = ['id']
def get_absolute_url(self):
return reverse('post', args=(str(self.id)))
#####################################################################
class Category(models.Model):
name = models.CharField(max_length=100, db_index=True, verbose_name="Категория")
slug = models.SlugField(max_length=255, unique=True, db_index=True, verbose_name="URL")
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('category', kwargs={'cat_slug': self.slug})
class Meta:
verbose_name = 'Категория'
verbose_name_plural = 'Категории'
ordering = ['id']
####################################################################
class University(models.Model):
name = models.CharField(max_length=100, db_index=True, verbose_name="Университет")
slug = models.SlugField(max_length=255, unique=True, db_index=True, verbose_name="URL")
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('university', kwargs={'university_slug': self.slug})
class Meta:
verbose_name = 'Университет'
verbose_name_plural = 'Университет'
ordering = ['id']
class Yearp(models.Model):
name = models.CharField(max_length=100, db_index=True, verbose_name="Год публикации")
slug = models.SlugField(max_length=255, unique=True, db_index=True, verbose_name="URL")
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('yearp', kwargs={'yearp_slug': self.slug})
class Meta:
verbose_name = 'Год публикации'
verbose_name_plural = 'Год публикации'
ordering = ['id']
here is urls
urlpatterns = [
path('', WomenHome.as_view(), name='home'),
path('personal', PersonalPage.as_view(), name='personal'),
path('about/', about, name='about'),
path('addpage/', AddPostView.as_view(), name='add_page'),
path('contact/', ContactFormView.as_view(), name='contact'),
path('login/', LoginUser.as_view(), name='login'),
path('logout/', logout_user, name='logout'),
path('register/', RegisterUser.as_view(), name='register'),
path('post/<int:pk>/', ShowPost.as_view(), name='post'),
path('category/<slug:cat_slug>/', WomenCategory.as_view(), name='category'),
]
here is list_categories.html
{% for c in cats %}
{% if c.pk == cat_selected %}
<li class="selected">{{c.name}}</li>
{% else %}
<li><a href="{{ c.get_absolute_url }}">{{c.name}}</a></li>
{% endif %}
{% endfor %}
I tried just to copy all that fields, but when i finished, it did not work I will be really thankful to someone who can help with it