python中删除按钮的实现_关于python:如何删除特定模型的Django管理中的添加按钮?...

我有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.")

将它们设置为editable = False,因为该模型只能通过代码进行编辑。

例如。 创建书时,将AmountOfBooks中该书的对象设置为0,以及添加或采用书时,余额增加或减少。

因此,当我在Django管理中单击"添加图书数量"按钮时,不会显示AmountOfBooks模型的字段。

但是我只想为AmountOfBooks模型从Django admin中删除该按钮。

怎么做 ?

更新

有关如何在Django Admin中使Django模型仅显示(只读)的问题,可以继续此问题。

您有理由不只是将其作为Book上的字段进行跟踪吗?就是说,add按钮仅针对具有适当权限的用户显示,因此,如果您不向任何人授予此模型的add权限,则除超级用户外,没有人会看到add按钮。

我正在构建一个应用程序,在该应用程序上,每本书(每天大约有100本书)的输入和输出都会丢失。例如。某人将拿50本书,以太书将拿30本书,然后他们将再添200本书,依此类推。因此,模型AmountOfBooks就像天平一样使用,以便他们知道每本书有多少。如果仅保留更改权限,则用户可以看到书籍,但仍然可以更改,但由于editable = False,他无法更改任何内容。因此,这是一些解决方法。但是,如果有一种方法可以授予对此模型以只读(只读)访问权限,我会更好。

检查以下问题的答案:stackoverflow.com/questions/7920371/whole-model-as-read-only/,并在ModelAdmin上查找get_readonly_fields

@WebOrCode-该注释仍然无法解释为什么这不是Book上的一个字段。每本书在相应的表中都有一行。可以为每一行维护可用副本的运行计数,并且可以更有效地查找和编辑该副本。另外,您可以将字段设置为editable=False,而管理员将无法更改该字段。

@PeterDeGlopper我开始看到您设计的好处。我认为我当前的设计太复杂了。您能解释一下您将如何处理交易表(该表应具有谁在何时购买或提供什么书的数据)?

@WebOrCode-如果您要维护与给定书有关的所有交易记录,我认为您应该将金额视为计算值。如果您的秤允许,您可以在每次需要数量时对增加和减少进行求和。如果不允许,则可以保留带时间戳的金额,并加上该时间戳之后的增加和减少,以保持合理的记录数。后者的维护有点麻烦,并且需要更复杂的模型设置,因此,如果可以的话,请避免使用它-但是,如果您有足够的数据,则不能这样做。

很简单,只需在Admin类中重载has_add_permission方法,如下所示:

class MyAdmin(admin.ModelAdmin):

def has_add_permission(self, request):

return False

抱歉,是否可以使用其他用户的"复制并粘贴"答案? stackoverflow.com/questions/4143886/

为此,您需要在Admin类中重写has_add_permission方法:

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')

此处的文档:https://docs.djangoproject.com/en/dev/ref/contrib/admin/

如果我这样做,我仍然可以更改模型,并且我只希望具有查看功能。

您需要的@WebOrCode has_change_permission

当我添加has_change_permision时,我再也看不到该表了。 has_add_permission和has_change_permission的工作方式与对用户的适当权限相同。

@WebOrCode您正确,使用has_change_permission您无法查看数据...在模型中可编辑并没有帮助?

也可以使用@WebOrCode readonly_fields

您询问了您的设计本身,因此我将首先解决。 如果您想保留股票的历史记录,那么有一个独特的表(模型)是有意义的,但是您需要一个时间戳字段和一个唯一的约束(帐簿,时间戳)。 现在,如果您只是想保持库存最新状态,则帐簿和金额之间的关系实际上是一对一的,因此金额字段确实属于帐簿表。 在这种情况下,您只需要在本书的ModelAdmin的" readonly_fields"属性中添加"金额"即可解决您的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值