【问题标题】:Debugging Django admin panel bug调试 Django 管理面板错误
【发布时间】:2015-06-13 00:15:09
【问题描述】:

当我导航到特定模型的管理界面(全表视图)并点击“保存”时,通常的红色横幅上会弹出此错误:

Please correct the errors below.

不用说,在我尝试并修复它之前,我实际上无法对此视图进行编辑。

这是我的课:

 class RoleMapping(models.Model):
     MIN_LENGTH, MAX_LENGTH = 3, 40
     role_name = models.CharField(unique=True, max_length=MAX_LENGTH, validators = [
         MinLengthValidator(MIN_LENGTH, "Field length should be greater than {}".format(MIN_LENGTH))
     ])
     role_type = models.ForeignKey(RoleType, null=True, blank=True )

这是管理界面模型。但是,翻转一些可编辑字段似乎使事情变得正常。

 class RoleMapping(admin.ModelAdmin):
     model = RoleMapping
     list_display = ('role_name', 'role_type',)
     #list_editable = ('role_name', 'role_type',) # This fails
     #list_editable = ('role_name',) # This fails
     list_editable = ('role_type',) # This works?!

通过将 role_type 保留为唯一可编辑的类型,我可以很容易地让它工作。但是,我只是在经过一些试验和错误后才发现这一点。我想知道:

  1. django 调试这类 admin-panel-ORM 的方法是什么 未来的问题

  2. 为什么它一开始就失败了?

【问题讨论】:

    标签: python django debugging django-models


    【解决方案1】:

    根据the Django admin docs

    注意:list_editable 与 特定方式;您应该注意以下规则:

    • list_editable 中的任何字段也必须在list_display 中。您无法编辑未显示的字段!
    • 不能同时在list_editablelist_display_links 中列出相同的字段——一个字段不能既是表单又是链接。

    如果违反这些规则中的任何一个,您都会收到验证错误。

    我的猜测是你违反了第二点,role_name 默认是list_display_links 的唯一成员。

    要对此进行测试,请设置list_display_links = None 或创建另一个字段并将其添加到list_displaylist_display_links

    编辑:

    我怀疑以下内容会给你你想要的。我只是将id 添加为list_display 的第一个元素。在幕后,这会将id 添加到list_display_links,而不是role_name,从而释放role_name 以允许在list_editable 中使用。

    class RoleMapping(admin.ModelAdmin):
         model = RoleMapping
         list_display = ('id', 'role_name', 'role_type',)
         list_editable = ('role_name', 'role_type',)
    

    【讨论】:

    • 感谢您的链接!我不确定这是否适用于我的情况 - 我周围没有任何 list_display_links。
    • @mallyvai 当您转到RoleMapping 的管理页面时,您是否单击role_name 以转到特定记录的详细信息?如果是这样,这意味着role_namelist_display_links 元组中(默认情况下)。
    • @mallyvai 请参阅我的回答中的编辑。我为RoleMapping 管理员添加了我相信可以解决您的问题的代码。
    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2018-06-03
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多