첨부 된 트랜잭션이 포함 된 장고 데이터베이스가 있습니다. 관리 인터페이스에서 각 도서 페이지에 각 도서에 첨부 된 거래를 보여 드리고자합니다.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) 만 표시하고 다른 필드를 숨기려면 어떻게해야합니까?
또한 헤더는 현재 "도서 이력 - 거래 : 거래 객체"입니다. '거래 객체'보다 친숙한 것을 어떻게 표시 할 수 있습니까?
별도의 질문으로 나눠서 알려주십시오.
감사합니다.
다이빙을
__unicode__
메소드를 오버라이드 (override) : 또한fields
속성 http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.fields을 지정할 수 : 0
http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#model-formsets-max-num
2
max_num
설정 "Add another"는 jQuery django formset 툴킷의 기능으로 보이며 쉽게 닫히지 않습니다. 이 항목을 사용자 정의 표시 테이블로 만들려면 $ {TEMPLATE_ROOT} /admin/APPNAME/MODELNAME/change_form.html을 작성하고 "admin/change_form.html"을 확장 한 다음 인라인 객체 블록을 재정의하십시오. –max_num을 0으로 설정하면 처리됩니다. –