我有一個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, ]
我有幾個問題,凡是涉及到一個事實,即交易的概念只讀。
- 如何禁用交易的「添加新鏈接」?
- 如何僅顯示我關心的字段 - user,transaction_type和transaction_date - 並隱藏其他字段?
另外:標題目前是「圖書歷史 - 交易:交易對象」。我如何顯示比'交易對象'更友好的東西?
請讓我知道這是否應該拆分成單獨的問題!
謝謝。
潛水到源代碼, 「添加另一個」似乎是jQuery django formset工具包的一個功能,並且不容易解散。如果你希望這個東西是一個自定義的顯示錶,爲什麼不創建一個$ {TEMPLATE_ROOT} /admin/APPNAME/MODELNAME/change_form.html,擴展「admin/change_form.html」,然後覆蓋內聯對象塊? – 2011-02-03 21:47:02
將max_num設置爲0會照顧它。 – 2011-02-04 01:53:51