Как я могу узнать, нахожусь ли я на странице добавления или редактирования в Admin Django? - PullRequest
0 голосов
/ 02 октября 2009

Для следующего кода:

class Author(models.Model):
    name = models.CharField(max_length=100)

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

class BookInline(admin.TabularInline):
    model = Book
    extra = 1

class AuthorAdmin(admin.ModelAdmin):
    inlines = [
        BookInline,
    ]

Если я добавлю нового Автора через администратора, он покажет мне одну запись в Книге из-за extra=1. Если я отредактирую существующего Автора, у которого есть одна Книга, администратор покажет существующую книгу и новое поле, чтобы добавить новую.

Текущее поведение при редактировании автора, у которого есть 1 книга:

Author: Someone
Book: The book title
Book #2:

Требуется поведение при редактировании автора, у которого есть 1 книга:

Author: Someone
Book: The book title

Возможно ли в admin.py для приведенного выше кода проверить, нахожусь ли я на странице добавления или редактирования? Моя цель - установить extra=1 для добавления и extra=0 для редактирования.

Ответы [ 2 ]

1 голос
/ 02 октября 2009

Неважно, я просто использовал max_num=1 вместо extra=1, это решает мою проблему. Вот ссылка .

0 голосов
/ 02 октября 2009

Возможно, у вас может быть функция, которая возвращает условное значение, основанное на количестве книг для данного встроенного файла?

Что-то вроде ...

class BookInline(admin.TabularInline):
    model = Book
    extra = extra_count

    def extra_count(self):
        if self.model.objects.count > 0:
            return 1
        else
            return 0

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

...