另一個模型假設我有型號:Django的訪問通過外鍵
Class Author(models.Model):
id = models.PositiveIntegerField()
dob = models.DateField()
Class Note(models.Model):
note = models.TextField()
author = models.ForeignKey(Author)
Class Book(models.Model):
name = models.CharField()
pubdate = models.DateField()
author = models.ForeignKey(Author)
而且在admin.py:
Class BookInline(admin.StackedInline):
model = Book
Class NoteInline(admin.StackedInline):
model = Note
Class AuthorAdmin(admin.ModelAdmin):
model = Author
inlines = [BookInline, NoteInline]
Class BookAdmin(admin.ModelAdmin):
model = Book
用戶需要從AuthorAdmin頁面中輸入數據,並有內聯輸入圖書數據。
理想情況下,我希望筆記文本框成爲Book模型的一部分,但大部分時間不太可能使用。
所以我認爲爲了提高數據庫效率,我把它移到了一個單獨的表格中。如果沒有正確工作的嵌套內聯(我嘗試了現有的軟件包並遇到已知的錯誤),上面的設置可以正常工作(即將附註附加到Author而不是Book)。
但是,當我使用BookAdmin時,我看不到任何註釋(因爲它是作者的外鍵,而不是Book)。有沒有辦法在給定的書籍記錄中編輯與作者有關的任何筆記?
更新
基於下面的評論,我已經添加了以下外鍵注:
Class Note(models.Model): note = models.TextField() author = models.ForeignKey(Author) book = models.ForeignKey(Book)
然後
Class BookAdmin(admin.ModelAdmin): model = Book inlines = [NoteInline]
這讓我來訪問請參閱BookAdmin中的備註字段。
但是,當我從AuthorAdmin輸入筆記而不是在BookAdmin中顯示此筆記時,會顯示一個新的空白筆記字段。
我在做什麼錯?
書並不總是有筆記,事實上我猜測只有一個筆記,或許10%的所有書最好。這就是爲什麼我想將它們移動到一個單獨的表格中,而不是有很多空的TextFields ...... Notes與書籍確實有關,但它們與作者相關(例如書評)是有意義的。是否有另一種方式讓他們與書籍相關,並且仍然有上面討論的我的內聯? – mcrsam 2015-02-09 05:27:58
@mcrsam做筆記總是有一本相關的書?或者是作者唯一的保證關係?爲了保持簡單,我只需在Book中添加一個FK到你的筆記模型。然後,您的BookAdmin只會使用NoteInline。如果需要,關係甚至可以是可選的。 – 2015-02-09 17:05:08
理想情況下,筆記應該總是有一本相關的書(例如,筆記是一本書評論。因爲我不能嵌套內聯,所以筆記與作者相關也可以)。我嘗試從Book to Note中添加FK,但是隨後BookAdmin NoteInline顯示一個新的note字段,而不是現有的note條目(max_num設置爲1) – mcrsam 2015-02-10 10:39:26