Реорганизация моделей ManyToMany в другой порядок - PullRequest
1 голос
/ 30 апреля 2020

У меня есть установка, подобная этой.

class Author(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    books = models.ManyToManyField(Book)

    def __unicode__(self):
        return self.title

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author)

    def __unicode__(self):
        return self.title

Теперь в моей админ-панели я могу выбрать автора и добавить книги под этим c автором. Когда я распечатываю все книги для каждого автора, он печатает их в том порядке, в котором они были добавлены на панели администратора.

Можно ли изменить порядок на панели администратора, чтобы при печати они печатали в порядке админки?

admin.py

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    pass

@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
    pass

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Вы можете добавить внутрь каждой модели класс Meta с атрибутом упорядочения, чтобы получать предметы в определенном порядке.

class Book(models.Model):
    ...
    class Meta:
        ordering = ['author']

Может быть, это вам поможет.

0 голосов
/ 30 апреля 2020

насколько я понимаю, вы используете TabularInline для книг, если это правильно, поэтому вам просто нужно сделать простую функцию под названием get_queryset

def get_queryset(self, request):
    return super(BookInlineAdmin, self).get_queryset(request).order_by('YOURFIELD')

...