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

Django-import-export报错:module无_meta属性的解决求助

解决django-import-export导入时的AttributeError: module 'quizbot.quiz.models' has no attribute '_meta'错误

问题根源

你的代码存在三个关键错误导致该异常:

  • Question模型覆盖默认管理器:Question类中设置objects = None,删除了Django模型默认的objects管理器,而_meta属性的正常访问依赖模型的管理器与元数据结构,直接导致django-import-export无法正确识别模型。
  • QuizResource绑定模块而非具体模型:QuizResource的Meta类中model = models,这里的models是导入的模块,而非具体的Question或Answer模型类,django-import-export需要绑定到具体模型才能读取_meta信息。
  • Admin注册拼写与参数错误:admin.site.reqister是拼写错误(正确为register),且注册时传入的是模块models而非具体模型类,同时一个ImportExportModelAdmin通常对应单个模型,需分别注册。

修复步骤

1. 修复Question模型

移除Question类中的objects = None行,恢复Django默认模型管理器:

from django.db import models

class Question(models.Model):
    # 移除该行:objects = None
    LEVEL = (
        (0, ('Any')),
        (1, ('Beginner')),
        (2, ('Intermediate')),
        (3, ('Advanced')),
        (4, ('Expert')),
    )

    title = models.CharField(("title"), max_length=255)
    points = models.SmallIntegerField("points")
    difficulty = models.IntegerField(('Difficulty'), choices=LEVEL, default=0)
    is_active = models.BooleanField(("Is Active"), default=True)
    created_at = models.DateTimeField(("Created"), auto_now=False, auto_now_add=True)
    updated_at = models.DateTimeField(("Updated"), auto_now=True, auto_now_add=False)

    def __str__(self):
        return self.title

2. 修正admin.py配置

为每个模型单独创建Resource和Admin类,正确注册:

from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from import_export import resources
from .models import Question, Answer

# Question模型的导入导出资源
class QuestionResource(resources.ModelResource):
    class Meta:
        model = Question

# Answer模型的导入导出资源
class AnswerResource(resources.ModelResource):
    class Meta:
        model = Answer

# Question模型的Admin配置
class QuestionAdmin(ImportExportModelAdmin):
    resource_class = QuestionResource

# Answer模型的Admin配置
class AnswerAdmin(ImportExportModelAdmin):
    resource_class = AnswerResource

# 分别注册两个模型
admin.site.register(Question, QuestionAdmin)
admin.site.register(Answer, AnswerAdmin)

3. 验证修复

启动Django服务器后进入后台管理页面,Question和Answer模型将显示导入导出按钮,此时导入文件不会再出现_meta相关错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:40:14