You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Django EAV 2触发ValueError:not enough values to unpack (expected 2, got 0)

问题描述

使用Django EAV 2时,访问产品添加页面(http://127.0.0.1:8000/admin/shop/product/add/)触发如下错误:

  • 异常类型:ValueError
  • 异常信息:not enough values to unpack (expected 2, got 0)
  • 异常位置:django/forms/widgets.py第772行的_choice_has_empty_value方法中
  • 模板错误位置:admin/includes/fieldset.html第25行的{{ field.field }}

相关Admin代码:

from django.contrib import admin
from .models import Product
from eav.forms import BaseDynamicEntityForm
from eav.admin import BaseEntityAdmin

# Register your models here.
class ProductAdminForm(BaseDynamicEntityForm):
      model = Product

class ProductAdmin(BaseEntityAdmin):
      form = ProductAdminForm

admin.site.register(Product, ProductAdmin)

环境信息:

  • Django版本:5.1.1
  • 触发场景:后台添加产品页面
解决方案

这个错误是因为某个EAV属性的选项列表为空导致的——具体来说是Choice类型的Attribute没有配置任何Option选项,Django表单渲染时无法解析空的choices列表,触发了解包错误。

解决步骤:

  1. 登录Django后台,找到EAV模块的Attribute管理页面
  2. 检查所有类型为Choice的Attribute:
    • 如果某个Choice类型Attribute没有添加任何Option,立即添加至少一个选项(每个Option需要设置值和显示文本)
  3. 确认Product模型已正确关联EAV:
    • 确保Product模型继承自eav.models.Entity,或者通过EAV.register(Product)完成注册(如果用的是装饰器或手动注册方式)
  4. 测试验证:添加完选项后刷新产品添加页面,错误应该会消失

如果暂时不需要该Choice属性,可以先将其类型改为Text或其他非选择类型,也能临时解决问题。

内容的提问来源于stack exchange,提问作者Asxetos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 11:06:06