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. Помогите разобраться пожалуйста.