Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Отобразить на Django админке связанные объекты [RSS Feed]

#1 Авг. 18, 2017 17:18:04

pika1989
Зарегистрирован: 2017-08-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Отобразить на Django админке связанные объекты

Всем привет!

Имею две модели, например, Book и Author:

 class Author(models.Model):
    #...
 
class Book(models.Model):
    #...
    author = models.ForeignKey(Author, on_delete=models.CASCADE, default=0, null=False)
Мне необходимо на странице с авторами отображать поле со ссылкой на список книг. Это я сделала так:
 AuthorAdmin(admin.ModelAdmin):
    list_display = ("books_list")
    def books_list(self, obj):                                              
          url = urlresolvers.reverse("admin:author_book_changelist")          
          return u'<a href="%s?%s=%d">%s</a>' % (url, "id", obj.id, "Books")                   
    books_list.short_description = "Book"                                   
    books_list.allow_tags=True
 
 
BookAdmin(admin.ModelAdmin):
    def get_model_perms(self, request):                                                                                                    
        """Return empty perms dict thus hiding the model from admin index."""   
        return {}                                                               
                                                                           
    def get_queryset(self, request):                                            
        qs = super(BookAdmin, self).get_queryset(request)                       
        author_id = request.GET.get('id')                                   
        return qs.filter(author=author_id)                               
И мой вопрос: Почему когда принтую в консоль
 qs.filter(author=author_id)
, то получаю отфильтрованный queryset, а на странице пусто (используется стандартная страница с Django admin)? Что я делаю не так, и, вообще, реально ли такое провернуть с Django. Спасибо.

Отредактировано pika1989 (Авг. 18, 2017 17:21:03)

Офлайн

#2 Авг. 20, 2017 17:31:56

pika1989
Зарегистрирован: 2017-08-18
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Отобразить на Django админке связанные объекты

Я разобралась. Нужно было в методе books_list немного изменить ссылку:

 def books_list(self, obj):                                                           
     url = urlresolvers.reverse("admin:author_book_changelist")          
     return u'<a href="%s?%s=%d">%s</a>' % (url, "author__id__exact",    
                                                                        obj.pk, "Books")
А в классе BookAdmin убрать метод get_queryset.
Как-то так.

Офлайн

  • Начало
  • » Django
  • » Отобразить на Django админке связанные объекты[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version