Связанное поле получило недопустимый поиск: blog_posts_name - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь добавить автора в поле поиска, но оно выдает ошибку- Связанное поле получило недопустимый поиск: icontains

models.py

class Post(models.Model):
STATUS_CHOICES = (
    ('draft', 'Draft'),
    ('published', 'Published'),
    )
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250,unique_for_date='publish')
author = models.ForeignKey(User,
on_delete=models.CASCADE,related_name='blog_posts')
body = models.TextField()
publish = models.DateTimeField(default=timezone.now)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
status = models.CharField(max_length=10,
choices=STATUS_CHOICES,
    default='draft')

class Meta:
    ordering = ('-publish',)

def __str__(self):
    return self.title

admin.py

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'author', 'publish',
    'status')
    list_filter = ('status', 'created', 'publish', 'author')
    search_fields = ('title', 'body','status','author__blog_posts_name')
    prepopulated_fields = {'slug': ('title',)}
    raw_id_fields = ('author',)
    date_hierarchy = 'publish'
    ordering = ('status', 'publish')

Я пробовал search_fields = ( 'author', 'foreinkeyfield__author', 'author__name', 'author__User_name',)

в соответствии с предложением пользователей в ранее отвеченных вопросах, но, похоже, ни один из них не работает.

1 Ответ

2 голосов
/ 07 января 2020

Django * User модель имеет следующие поля (и другие, которые, вероятно, не имеют отношения к поиску по имени):

  • username
  • first_name
  • last_name
  • email

Вы можете использовать только существующие поля в поисках, в то время как поля, которые вы перечислили, делают не ссылаются ни на какие допустимые поля БД.

Поиск для вышеуказанных полей будет выглядеть следующим образом:

search_fields = (
    'author__username',
    'author__first_name',
    'author__last_name',
    'author__email',
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...