在Django 3.1上不存在ContentType匹配查询

问题描述

在尝试使用GenericForeignKey和Content_type创建注释系统时,将django降级到2.1或更低版本时效果很好,但是却出现错误消息,提示“ ContentType匹配查询不存在”。如果我尝试使用django3.x。 下面是代码片段

enter image description here

class CommentManager(models.Manager):
    def filter_by_instance(self,instance):
        content_type = ContentType.objects.get_for_model(instance.__class__)
        obj_id = instance.id
        qs = super(CommentManager,self).filter(content_type=content_type,object_id=obj_id)
        return qs


class Comment(models.Model):
    user   =   models.ForeignKey(User,on_delete=models.CASCADE)
    content_type=models.ForeignKey(ContentType,on_delete=models.CASCADE)
    object_id    =   models.PositiveIntegerField()
    content_object  =   GenericForeignKey()
    content         =   models.TextField()
    time_stamp      =   models.DateTimeField(auto_now_add=True)
    objects =   CommentManager()

    def __str__(self):
        return self.user.username

#Forms.py

class CommentForm(forms.Form):
    content_type = forms.CharField(widget=forms.HiddenInput)
    object_id       =   forms.IntegerField(widget=forms.HiddenInput)
    content         =   forms.CharField(widget=forms.Textarea)

#views.py

def detail(request,id):
    obj = get_object_or_404(Blog,id=id)
    obj_id = obj.id
    initial_data = {
        "content_type": obj.get_content_type,"object_id": obj.id
    }
    form = CommentForm(request.POST or None,initial=initial_data)
    if form.is_valid():
        c_type =    form.cleaned_data.get("content_type")
        content_type    =   ContentType.objects.get(model=c_type)
        obj_id =    form.cleaned_data.get("object_id")
        content_data    =   form.cleaned_data.get("content")
        new_comment,created = Comment.objects.get_or_create(
            user = request.user,content_type=content_type,object_id=obj_id,content= content_data

        )
        if created:
            print("It worls \n")


    context = {
        'form':form
    }
    return render(request,'blod_detail.html',context )

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...