Django:抽象模型不能用于实例化用于检索数据的模型

8

我正在处理一个关于Djongo的项目,其中包含一个抽象模型和一个主要模型。当我尝试插入一个值时,它可以无错误地被插入。但是当我尝试检索数据时,会收到“无法实例化抽象模型”的错误提示。

以下是我的模型:

class Exam_questions(models.Model):
    question=models.CharField(max_length=200,null=True)
    options=ArrayField(models.CharField(max_length=50))
    answer=models.CharField(max_length=50,null=True)
    types=models.CharField(max_length=50,null=True)
    
    class Meta:
        abstract=True


    

class ExamDetails(models.Model):
    _id=ObjectIdField()
    exam_id=models.IntegerField(null=False,default=0)
    questions=models.EmbeddedField(model_container=Exam_questions)
    objects = models.DjongoManager()

这是我的查询代码:

def exams_questions(request,exam_id):
        get_exams=ExamDetails.objects.filter(exam_id=3)
        print(get_exams)
        return HttpResponse("hello") # have given this response only for testing

当我尝试迭代或获取变量get_exams中的值时,出现了“抽象模型无法实例化”错误。请帮忙解决!

谢谢。

编辑: 我已经解决了问题。我执行了pip install djongo,它将django的版本从3.2降级到3.0.5,这解决了该问题。


1
你的所有迁移都已应用吗? - SergioC
是的,所有迁移都已应用。我在向数据库插入记录方面没有问题。但检索不起作用。 - Harish hari 53
你能展示一下你的导入吗? - GwynBleidD
这是models.py导入 from djongo import models from djongo.models import ObjectIdField from django.contrib.postgres.fields import ArrayField - Harish hari 53
这是models.py的导入:from djongo import models from djongo.models import ObjectIdField这是我的views.py导入:from django.contrib.auth import authenticate, login, logout from django.contrib.auth.models import Group from .forms import UserForm from .decorators import unauthenticated_student, allowed_users from teacher.models import * from exams.models import * from exams.models import ExamDetails from django.http import HttpResponse, HttpResponseRedirect, Http404 - Harish hari 53
2个回答

7
你可以通过将Django版本降级为3.1.12来解决问题。 pip install django==3.1.12

这个有效!非常感谢! - Abhay Bh

-2

从Exam_questions类中删除Class Meta: abstract=True。然后查看


1
Djongo文档指出:“如果您不打算将嵌入式模型用作独立模型(这意味着它将始终嵌入在父模型中),则应添加类Meta和abstract = True。这样,Djongo将永远不会将此模型注册为实际模型。”因此,我们中的一些人需要这个选项,删除它只会导致另一个错误。 - tayoung

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接