Django管理员StackedInline定制

时间:2011-02-03 19:54:02

标签: python django django-admin

我有一个Django书籍数据库,附带交易。在管理界面中,在每个书页上,我想显示每本书附带的交易。

理想情况下,这应该是只读的,无法添加或删除事务。我只想展示一些模特的领域。

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 - 并隐藏其他字段?
  3. 另外:标题目前是“图书历史 - 交易:交易对象”。如何展示比“交易对象”更友好的东西?

    请告诉我这是否应该分成单独的问题!

    感谢。