2011-02-03 65 views
3

我有一個Django書籍數據庫,附帶事務。在管理界面中,在每本書頁上,我想顯示附在每本書上的交易。Django admin StackedInline定製

理想情況下,這應該是隻讀的,不能添加或刪除事務。我只想顯示一些模型的字段。

models.py

class Book(models.Model): 
    title = models.CharField(max_length=400) 
class Transaction(models.Model): 
    id = models.IntegerField(primary_key=True) 
    book = models.ForeignKey(Book) 
    user = models.ForeignKey(User) 
    transaction_type = models.IntegerField(choices=TRANSACTION_TYPES) 
    ipaddress = models.IPAddressField(null=True, blank=True) 
    transaction_date = models.DateTimeField() 
    date_added = models.DateTimeField(auto_now_add=True) 
    class Meta: 
     get_latest_by = 'transaction_date' 
     ordering = ('-transaction_date',) 

admin.py

class TransactionInline(admin.StackedInline): 
    model = Transaction 
    readonly_fields = ['user', 'transaction_type', 'transaction_date'] 
    verbose_name = 'Transaction' 
    verbose_name_plural = 'Book history' 
class BookAdmin(admin.ModelAdmin): 
    fieldsets = [ (None, {'fields': ['title'}) ] 
    inlines = [ TransactionInline, ] 

我有幾個問題,凡是涉及到一個事實,即交易的概念只讀。

  1. 如何禁用交易的「添加新鏈接」?
  2. 如何僅顯示我關心的字段 - user,transaction_type和transaction_date - 並隱藏其他字段?

另外:標題目前是「圖書歷史 - 交易:交易對象」。我如何顯示比'交易對象'更友好的東西?

請讓我知道這是否應該拆分成單獨的問題!

謝謝。

+0

潛水到源代碼, 「添加另一個」似乎是jQuery django formset工具包的一個功能,並且不容易解散。如果你希望這個東西是一個自定義的顯示錶,爲什麼不創建一個$ {TEMPLATE_ROOT} /admin/APPNAME/MODELNAME/change_form.html,擴展「admin/change_form.html」,然後覆蓋內聯對象塊? – 2011-02-03 21:47:02

+0

將max_num設置爲0會照顧它。 – 2011-02-04 01:53:51

回答