如何在管理表单中添加自定义功能?

用户名

我想实现一个更新功能quantityLibraryBook每个管理中增加了一本书,时间SingleBookadmin的网站。我一直在寻找这样做的方法,但无济于事。任何指针,包括指向文档的链接,将不胜感激。这是我的代码:

#models.py
class LibraryBook(models.Model):
    book_title = models.CharField(max_length=100, blank=False)
    book_author_id = models.ForeignKey(BookAuthors, on_delete=models.CASCADE)
    category = models.ForeignKey(BookCategory, on_delete=models.CASCADE)
    quantity = models.IntegerField(blank=False, default=0)
    number_borrowed = models.IntegerField(default=0)

    def __unicode__(self):
        return unicode(self.book_title)

class SingleBook(models.Model):
    serial_number = models.CharField(primary_key=True , max_length=150, blank=False)
    book_id = models.ForeignKey(LibraryBook, on_delete=models.CASCADE)
    is_available_returned = models.BooleanField(default=True)
    is_borrowed = models.BooleanField(default=False)

    def __unicode__(self):
        return unicode(self.book_id)

#admin.py
class SingleBookAdmin(admin.ModelAdmin):
    list_display = ('book_id', 'serial_number')

class LibraryBookAdmin(admin.ModelAdmin):
    list_display = ('book_title', 'book_author_id', 'quantity')
    search_fields = ('book_title', 'book_author_id')
    fields = ('book_title', 'book_author_id', 'quantity')

PS:我省略了导入和admin.site.register代码

Django==1.9.8
django-material==0.8.0
django-model-utils==2.5.1
psycopg2==2.6.2
wheel==0.24.0
e4c5

覆盖save_model

如果您只想在管理员更新记录时进行更改,最好的方法是在ModelAdmin中覆盖save_model方法

根据是否要添加或更改对象,为save_model方法提供HttpRequest,一个模型实例,一个ModelForm实例和一个布尔值。在这里,您可以执行任何保存前或保存后的操作。

class SingleBookAdmin(admin.ModelAdmin):
    list_display = ('book_id', 'serial_number')

    def save_model(self, request, obj, form, change):
       admin.ModelAdmin.save_model(self, request, obj, form, change)


       if obj.is_borrowed:
          do something to obj.book_id.quantity
       else:
          do something to obj.book_id.quantity

后保存信号

from django.dispatch.dispatcher import receiver
from django.db.models.signals import post_save

@receiver(post_save, sender=SingleBook)
def user_updated(sender,instance, **kwargs):
    ''' Fired when a SingleBook is updated or saved
    we will use the opporunity to change quantity'''
    
    # your logic here

其他指针

另一方面,如果您想根据所有用户操作进行更改,则捕获post_save信号是可行的方法。无论哪种情况,您都可能要覆盖模型中from_db方法,以跟踪哪些字段已更改。

您可能还需要改变quantitynumber_borrowedIntegerFields(除非你只使用SQLite在这种情况下,它并不重要)

book_author_id可能应该是book_author,book_id应该应该是book(这不是规则,只是避免使用丑陋的book_id_id引用的约定)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在ML pyspark管道中添加自己的功能作为自定义阶段?

如何在Yii2表单字段中为标签添加自定义类?

如何在Django Admin中向更改模型表单添加自定义操作?

如何在管理面板中添加自定义用户模型?

如何在管理屏幕子菜单项中添加自定义HTML类名称?

如何在Django中将不可编辑字段添加到自定义管理表单中

如何在Laravel 5.6的默认注册表单中添加自定义字段?

如何在模板驱动的表单中为ngModelGroup添加自定义验证

如何在oracle表单中添加自定义背景色?

如何在grails应用程序中管理角色明智的功能(自定义授权)

如何在HTML5表单验证中包含自定义字段验证功能?

如何在Drupal8的“站点信息”表单中添加新的自定义字段

如何在自定义方案中添加其他功能?

如何在Joi中添加自定义验证器功能?

Django:如何在表单保存中向数据添加自定义字段?

如何在React SPA中实现添加自定义js代码段功能?

如何在Django管理面板中添加自定义链接/ URL字段?

如何在Xamarin表单macOS的条目(用于聊天)中添加自定义图像?

如何在Woocommerce中在自定义订单状态的管理菜单中添加计数?

Joomla,如何在Virtuemart类别表单中添加自定义字段?

如何在Django管理表单中添加自定义标签和内容

如何在活动管理员中为自定义成员操作添加视图?

如何在Drupal 7中为自定义内容类型添加主题/编辑表单

如何在magento 2的产品编辑表单的“可自定义选项”中添加新字段?

如何在表单中动态添加自定义控件

如何在 Drupal 中添加自定义 HTML 表单

如何在 Shopify 中为管理员添加自定义菜单?

如何在 Django 中为表单字段添加自定义标题?

作为管理员,我如何在自定义闪电记录表单中配置字段?