2009-10-02 56 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

相關問題