【问题标题】:Wagtail(Django) ModelAdmin Button view actionWagtail(Django) ModelAdmin 按钮视图操作
【发布时间】:2021-07-01 04:40:45
【问题描述】:

我想在 wagtail admin 中放置一个按钮以在视图模式下进行检查,默认情况下会显示编辑和删除,但我不知道调用仅包含模型视图的视图需要做什么

这是我的代码:

products.models.py

class CamisaOrder(models.Model):
    STATUS_CHOICES = (
        ('PAYMENTVERFICATION','Verificacion Forma Pago'), ('PROCESSINGORDER','Procesando Orden'), 
        ('MAKING','Elaboracion'),
        ('PROCESSINGSHIPING','Preparando Envio'),
        ('SHIPPED','Enviado'),
        ('DELIVERED','Recibido'),
        ('CANCELED','Cancelado'),
        ('RETURNED','Retornado'),
        )   
    camisa = models.ForeignKey('CamisetaProduct',related_name='+', on_delete= models.PROTECT)
    cantidad = models.IntegerField()
    status = models.CharField(max_length=20, null=False, blank=False, choices=STATUS_CHOICES, default="PROCESSINGORDER")

    panels = [
        FieldPanel('camisa'),
        FieldPanel('cantidad'),
        FieldPanel('status')
    ]

    class Meta:
        verbose_name="Camisa Orden"
        verbose_name_plural="Camisas Ordenes"
    

wagtail_hooks.py

class ProductButtonHelper(ButtonHelper):

 
    view_button_classnames = ['button-small', 'icon', 'icon-site'] 

    def view_button(self, obj):
        # Define a label for our button
        text = 'View {}'.format(self.verbose_name)
        logging.debug(obj)
        return {
            'url': #url here for inspect model#
            'label': text,
            'classname': self.finalise_classname(self.view_button_classnames),
            'title': text,
        }

    def get_buttons_for_obj(self, obj, exclude=None, classnames_add=None, classnames_exclude=None):
        btns = super().get_buttons_for_obj(obj, exclude, classnames_add, classnames_exclude)
        if 'view' not in (exclude or []):
            btns.append(
                self.view_button(obj)
            )
        return btns



class CamisetaOrderAdmin(ModelAdmin):
    model = CamisaOrder
    button_helper_class = ProductButtonHelper  
    menu_label = 'Pedidos y Ordenes'
    menu_icon = 'mail'
    menu_order = 200
    add_to_settings_menu =  False
    exclude_from_explorer =  False
    list_display = ('camisa', 'cantidad', 'status')
    list_filter = ('status',)
    search_fields = ( 'status',)


modeladmin_register(CamisetaOrderAdmin)

我怎样才能实现这种方法?

如果是这样,我需要做一个自定义视图并插入 wagtail 管理模型,我该怎么做?我可以制作一个模型表单,例如显示模型自定义操作的弹出窗口吗?比如改变他的状态或一些价值

【问题讨论】:

    标签: python django wagtail


    【解决方案1】:

    我找到了解决方案,在 ModelAdmin 类上添加 inspect_view_enabled

    class CamisetaOrderAdmin(ModelAdmin):
        model = CamisaOrder
       # button_helper_class = ProductButtonHelper  # ProductButtonHelper
       # url_helper_class = CustomPageAdminURLHelper
        menu_label = 'Pedidos y Ordenes'
        menu_icon = 'mail'
        menu_order = 200
        add_to_settings_menu =  False
        exclude_from_explorer =  False
        list_display = ('camisa', 'cantidad', 'status')
        list_filter = ('status',)
        search_fields = ( 'status',)
        inspect_view_enabled=True
        inspect_view_fields = ('camisa', 'cantidad', 'status')
    

    参考:https://docs.wagtail.io/en/stable/reference/contrib/modeladmin/inspectview.html

    【讨论】:

      猜你喜欢
      • 2017-08-06
      • 2017-05-24
      • 2021-12-12
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多