Проблема с Django Администратор и фильтр автозаполнения (Select2) с обратным ключом - PullRequest
0 голосов
/ 01 марта 2020

Я работаю над Django 2.2.10 и Python 3.5. Я хотел использовать функцию, которая была представлена ​​в Django 2, то есть использовать Select2 для фильтрации списков из другой модели, которая имеет обратную связь с моделью, которую я перечисляю, которая отображается как Inline в Django Admin.

Позвольте мне объяснить.

У меня есть две модели, подобные этой:

models.py

class Books(models.Model):
    name = models.CharField(max_length=40)
    pages = models.PositiveSmallIntegerField(default=0)

class Members(models.Model):
    member_name = models.CharField(max_length=40)
    member_years = models.PositiveSmallIntegerField(default=0)

class BorrowedBooks(models.Model):
    book = models.ForeignKey(Books, on_delete=models.CASCADE)
    member = models.ForeignKey(Members, on_delete=models.CASCADE) 
    date_borrowed = models.DateField()
    date_returned = models.DateField()

admin.py

class BorrowedBooksInline(admin.TabularInline)
    model = BorrowedBooks
    extra = 0
    fields = ['book', 'member', 'date_borrowed', 'date_returned']
    search_field = ['book']

class BooksAdmin(admin.ModelAdmin):
    model = Books
    list_display = ['name', 'pages']

class MembersAdmin(admin.ModelAdmin):
    model = Members
    inlines = [BorrowedBooksInline, ]
    list_display = ['member_name', 'member_years']
    autocomplete_fields = ['borrowedbooksinline__book']
    search_field = ['member_name', 'member_years']

Я не все скопировал, потому что это было бы слишком много. По сути, я хотел бы иметь возможность фильтровать элементы, которые заимствовали книгу в определенный момент времени, но две модели связаны не напрямую, а через третью модель.

В настоящее время все работает отлично, но фильтр не отображается.

Есть предложения?

...