Web*_*ode 13 python django django-models django-admin
我有Django模型"AmountOfBooks",它只用作Book模型的平衡.
如果这不是数据库建模的好模式,那就这么说吧.
无论如何AmountOfBooks有两个字段:
class AmountOfBooks(models.Model):
book = models.ForeignKey(Book, editable=False)
amount = models.PositiveIntegerField(default=0, editable=False, help_text="Amount of book.")
Run Code Online (Sandbox Code Playgroud)
它们设置为editable = False,因为此模型仅由代码编辑.
例如.当书籍被创建时,AmountOfBooks中该书籍的对象被设置为0,并且当添加书籍或取得平衡时,可以增加或减少余额.
因此,当我点击Django管理员中的"添加书籍数量"按钮时,不会显示AmountOfBooks模型的字段.
但是我想从Django管理员那里删除那个按钮,只为AmountOfBooks模型.
怎么做 ?
更新
关于如何在Django Admin中使Django模型只是查看(只读)的问题可以继续吗?
小智 17
这很简单,只需在Admin类中重载has_add_permission方法,如下所示:
class MyAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return False
Run Code Online (Sandbox Code Playgroud)
为此,您需要覆盖has_add_permission
Admin 类中的方法:
class AmountOfBooksAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
return False
# to disable editing for specific or all fields
# you can use readonly_fields attribute
# (to see data you need to remove editable=False from fields in model):
readonly_fields = ('book', 'amount')
Run Code Online (Sandbox Code Playgroud)
文档在这里:https : //docs.djangoproject.com/en/dev/ref/contrib/admin/
归档时间: |
|
查看次数: |
7399 次 |
最近记录: |