2011-02-03 15 views
3

添付のトランザクションを使用して、書籍のDjangoデータベースを持っています。管理インターフェースでは、各書籍ページに、各書籍に添付されている取引を表示したいと考えています。Django管理者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

ダイビングで__unicode__メソッドをオーバーライド「別のものを追加する」はjQuery django formsetツールキットの機能であるように見え、簡単には解消されません。このことをカスタム表示テーブルにするには、$ {TEMPLATE_ROOT} /admin/APPNAME/MODELNAME/change_form.htmlを作成して "admin/change_form.html"を拡張し、インラインオブジェクトブロックを上書きしないでください。 –

+0

max_numを0に設定するとそれが処理されます。 –

答えて

関連する問題