django问题集锦

问题1:Running migrations: No migrations to apply.(django不能创建数据库中的表的问题)

解决:

第一步:
删除该app名字下的migrations下的init.py等文件。
第二步:
进入数据库,找到django_migrations的表,删除该app名字的所有记录。
第三步:执行下面这两条命令:(在项目目录下)

python manage.py makemigrations

python manage.py migrate

原因:
django_migrations表记录着数据库的对应表的修改记录。

每次修改后,都执行第三步的命令,然后在第一步的文件夹下生成修改的文件,django_migrations表记录修改的变更过程。

问题2: list和str互转

解决:

1.list->str

一:需要注意的是该方法需要list中的元素为字符型


image.png

二:若是整型,则需要先转换为字符型后再转为str类型。


image.png
2.str->list

2、str转list
假设有一个名为test_str的str,转换后的list名为test_list
则转换方法:
test_list=list(test_str)
例子:

问题3:Django 批量删除

解决:

array = self.request.data.get('ids', None)
        if array:
            """批量删除"""
            try:
                arrayStr = ','.join([str(x) for x in array])
                models.Profile.objects.extra(where=['id IN (' + arrayStr + ')']).delete()
            except:
                return ReturnData(message="ID不存在", statusCode=status.HTTP_400_BAD_REQUEST)
            return ReturnData( statusCode=status.HTTP_204_NO_CONTENT)

问题4:在Makemigrations 时出现 :AttributeError:'NoneType'对象没有属性'is_relation' - None未定义

解决:

.....
  File "E:\new_tdms\tdms\tdms_env\lib\site-packages\django\db\migrations\graph.py", line 376, in make_state
    project_state = self.nodes[node].mutate_state(project_state, preserve=False)
  File "E:\new_tdms\tdms\tdms_env\lib\site-packages\django\db\migrations\migration.py", line 85, in mutate_state
    operation.state_forwards(self.app_label, new_state)
  File "E:\new_tdms\tdms\tdms_env\lib\site-packages\django\db\migrations\operations\fields.py", line 148, in state_forwards
    delay = not old_field.is_relation
AttributeError: 'NoneType' object has no attribute 'is_relation'

鼠标打开E:\new_tdms\tdms\tdms_env\lib\site-packages\django\db\migrations\operations\fields.py文件。在文件中添加如下语句:

image.png

再次进行python manage.py makemigrations <你的app名字>
image.png

从图片中可以看出来在users 应用下profile表单的user_email字段存在问题,old_field不在数据库中了。找到了这个迁移:


image.png

把这个迁移删除,然后运行makemigrations 成功,


image.png

如果还报上面的错误说明还有字段出现这样的错误,按照上面的方法一个个解决掉就OK了,祝大家工作愉快。

问题5:django中不同App之间调用model,出现问题ValueError: attempted relative import beyond top-level package

解决办法:

在项目的setting.py中 添加sys.path.insert(0, os.path.join(BASE_DIR, '你app路径'))
image.png

然后在需要调用的地方 引用


image.png

问题6:DateTimeField received a naive datetime … while time zone support is active.

解决办法:

将项目的setting.py 中USE_TZ = True改成 False
image.png

问题7:序列化需要序列化**.objects.filter()

解决办法:

serializer.MenuSerializer(menuAll, many=True)   #加上many=True序列化列表

问题8:合并querySet

1.合并同一个model的多个QuerySet 的话,是可以采用这种方式的.

QuerySet = QuerySet1 | QuerySet2

返回querySet
2.用chain 来实现,即使是不同的MODEL中查询出来的数据,都可以合并到一个 list 中去.

QuerySet = chain(QuerySet1, QuerySet2)

返回iterator

问题9:The number of GET/POST parameters exceeded settings.DATA_UPLOAD_MAX_NUMBER_FIELDS.

解决:

如果您的settings.py存在DATA_UPLOAD_MAX_NUMBER_FIELDS,则将其值更改为更高的值,或者如果不存在,则将其添加到settings.py:

DATA_UPLOAD_MAX_NUMBER_FIELDS = 10240 # higher than the count of fields

问题10:django 后台ImageField字段类型使用element组件库的el-upload方法实现图片上传:

                   //字段名称
                  点击上传
                  
只能上传jpg/png文件,且不超过500kb

你可能感兴趣的:(django问题集锦)