如何修复“查询”对象没有属性“ contains_column_references”错误

时间:2019-05-18 15:24:17

标签: python django django-models

当我试图使用POST请求将一些数据插入mysql数据库时,我收到一条错误消息,通知我AttributeError'Query'对象没有属性'contains_column_references',它给出了错误消息:

跟踪:

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "/Users/asp/Desktop/learning platform/learningPlatform/contents/views.py" in create_content
  31.                 content.save()

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/base.py" in save
  729.                        force_update=force_update, update_fields=update_fields)

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/base.py" in save_base
  759.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/base.py" in _save_table
  842.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/base.py" in _do_insert
  880.                                using=using, raw=raw)

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/query.py" in _insert
  1125.         return query.get_compiler(using=using).execute_sql(return_id)

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1280.             for sql, params in self.as_sql():

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/sql/compiler.py" in as_sql
  1233.                 for obj in self.query.objs

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/sql/compiler.py" in <listcomp>
  1233.                 for obj in self.query.objs

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/sql/compiler.py" in <listcomp>
  1232.                 [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]

File "/Users/asp/Desktop/learning platform/env/lib/python3.7/site-packages/django/db/models/sql/compiler.py" in prepare_value
  1162.             if value.contains_column_references:

Exception Type: AttributeError at /contents/create
Exception Value: 'Query' object has no attribute 'contains_column_references'
traceback

from django.db import models
from lessons.models import Lessons
from django.utils.datastructures import MultiValueDictKeyError
class Contents(models.Model):
material_title = models.TextField()
content = models.TextField()
lesson_id = models.ForeignKey(Lessons,on_delete= models.CASCADE)

以下代码获取POST请求参数并将其插入数据库

 def create_content(request):
print("=================== create_content=============================")


if request.method == 'POST':
    if request.POST['lesson_id'] and request.POST['content'] and request.POST['material_title']:

        if request.POST['lesson_id']!='' and request.POST['content']!='' and request.POST['material_title']!='':



            ls = Lessons.objects

            lessons = Lessons.objects.filter(id=request.POST['lesson_id'])
            contents = Contents.objects.create(content=request.POST['content'],lesson_id_id=lessons,material_title=request.POST['material_title'])

            # contents.save()
            print("=======================")
            topic = Courses.objects.filter(userId=request.user)
            materialsbylesson = Lessons.objects



            return render(request,'contents_create.html', {'error':'Lesson Has been created successfully','topics':topic,'lessons':materialsbylesson})

        else:
            print("not all Available else statement3")
            topic = Courses.objects.filter(userId=request.user)
            materialsbylesson = Lessons.objects


            wikidata = Wikidata.objects
            return render(request,'contents_create.html', {'error':'Lesson Has been created successfully','topics':topic,'lessons':materialsbylesson})
    else:

        print("not all Available else statement2")
        print(request.POST['content'])
        topic = Courses.objects.filter(userId=request.user)
        materialsbylesson = Lessons.objects


        wikidata = Wikidata.objects
        return render(request,'contents_create.html', {'error1':'some inserted data is missing','topics':topic,'lessons':materialsbylesson})


else:
    # user = User.objects.get(username = request.POST['username'])
    try:
        # MARK get topics by user
        # MARK get lessons by topic
        print("==================================not post request")

        topic = Courses.objects.filter(userId=request.user)
        lessonsByTopic = Lessons.objects
        lessonsByUser = []
        for topicls in topic:
            lessons_hierarchy = Lessons.objects
            level_lesson = 1
            for lesson_hierarchy in lessons_hierarchy.all():
                if lesson_hierarchy.topic_id_id == topicls.id:
                    lessonsByUser.append(lesson_hierarchy)

        print("//////////////////////////////////////////////////////==")
        print(topic)
        print(lessonsByUser)
        # print(lessonsByTopic)
        print("//////////////////////////////////////////////////////==")
        # wiki_topic_id = topic.id
        # lesson = Lessons.objects

        return render(request,'contents_create.html',{'topics':topic,'lessons':lessonsByTopic,'ls':lessonsByUser})
    except Courses.DoesNotExist:
        print("except post request")
        print("does not exit")
        return render(request,'contents_create.html')

1 个答案:

答案 0 :(得分:0)

在创建新内容时,应该是这样的:

 contents = Contents.objects.create(content=request.POST['content'], lesson_id_id =request.POST['lesson_id'],material_title=request.POST['material_title'])