问题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中的元素为字符型
二:若是整型,则需要先转换为字符型后再转为str类型。
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
文件。在文件中添加如下语句:
再次进行python manage.py makemigrations <你的app名字>
从图片中可以看出来在users 应用下profile表单的user_email字段存在问题,old_field不在数据库中了。找到了这个迁移:
把这个迁移删除,然后运行makemigrations 成功,
如果还报上面的错误说明还有字段出现这样的错误,按照上面的方法一个个解决掉就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路径'))
然后在需要调用的地方 引用
问题6:DateTimeField received a naive datetime … while time zone support is active.
解决办法:
将项目的setting.py 中USE_TZ = True改成 False
问题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