Django не распознает поле username у класса User при фильтрации

Сейчас делаю фильтры для своего сайта по которым пользователь должен быстрее находить информацию, при создании фильтра для модели Post ошибок нет но почему то когда я делаю фильтр для встроенной в django модели user django продолжает думать что я фильтрую модель Post и выдает странную ошибку. С кодом будет лучше понятно(библиотеки все подключены просто я их не вставляю в код чтобы экономить место здесь):

Models.py:

class Post(models.Model):
    isStatya = models.BooleanField(default=0)#Статья или новость (0 = не статья)
    created_at = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=255)
    text = models.TextField()
    rating = models.IntegerField()
    theAuthor = models.ForeignKey(Author,on_delete=models.CASCADE)
    theCategory = models.ManyToManyField(Category)

views.py:

class PostList(ListView):
    model = Post
    template_name = "news.html"
    context_object_name = 'news'
   # paginate_by = 1  # поставим постраничный вывод в один элемент

    def get_context_data(self,
                         **kwargs):  # забираем отфильтрованные объекты переопределяя метод get_context_data у наследуемого класса (привет полиморфизм, мы скучали!!!)
        context = super().get_context_data(**kwargs)

        context['filter'] = ProductFilter(self.request.GET,
                                          queryset=self.get_queryset())  # вписываем наш фильтр в контекст
        context['filter2'] = AuthorFilter(self.request.GET,
                                          queryset=self.get_queryset())


        return context

Custom_filter.py:

class ProductFilter(FilterSet):
    # Здесь в мета классе надо предоставить модель и указать поля по которым будет фильтроваться (т.е. подбираться) информация о товарах
    class Meta:
        model = Post
        fields = {
            'title': ['icontains'],
             'text': ['icontains'],
        }

class AuthorFilter(FilterSet):
    # Здесь в мета классе надо предоставить модель и указать поля по которым будет фильтроваться (т.е. подбираться) информация о товарах
    class Meta:
        model = User
        fields = {
            'username': ['icontains'],
        }

Html файл(Фильтры загрузить не забыл!):

<form method="GET">
    {{ filter.form }} 
    <input type="submit" value="Найти">
</form>
   {% for product in filter.qs %}
    <tr>
        <td>
            {{ product.title|title }}
        </td>
        <td>
            {{ product.theCategory.CategoryName|title }}
        </td>

    <td>
            {{ product.text|title }}
        </td>

    </tr>
    {% endfor %}

<form method="GET">
    {{ filter2.form }} 
    <input type="submit" value="Найти">
</form>

{% for product2 in filter2.qs %}
    <tr>
     <td>
            {{ product2.username|title}}
        </td>
    </tr>
 {% endfor %}

Первая форма которая фильтрует по title и text модель Post работает абсолютно верно, но вот вторая форма выдает ошибку когда я пишу что то в textfield. Ошибка следующая:

Cannot resolve keyword 'username' into field. Choices are: comment, created_at, id, isStatya, postcategory, rating, text, theAuthor, theAuthor_id, theCategory, title

И выделяет строчку

{% for product4 in filter2.qs %}

Честно говоря мне не понятно что происходит, вторая форма должна фильтровать по модели User, а мне Django почему то пишет про поля модели Post. Помогите разобраться пожалуйста.


Ответы (0 шт):