2009-10-02 113 views
0

对于下面的代码:如何判断我是否在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用于编辑。

回答

1

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

0

也许你能有根据的书籍对于给定的直列量返回的条件值的函数吗?

喜欢的东西...

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

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

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

+0

从目前的需求1行需要的,但该模型已被编码为预测未来的需求变化。我不确定这是否是一种好的做法,但目前情况如此。 – 2009-10-02 19:16:38