如何判断我是否在Django管理员的添加或编辑页面?

时间:2009-10-02 19:05:00

标签: django django-admin

以下代码:

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 个答案:

答案 0 :(得分:1)

没关系,我刚用max_num=1代替extra=1,它解决了我的问题。这是reference

答案 1 :(得分:0)

也许你可以有一个函数根据给定内联的Books数量返回一个条件值?

像...一样的东西。

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

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

这是你要求的一种奇怪的行为。出于好奇,为什么你不希望它在编辑模式中显示额外的入口行?