发布加载Django夹具。UnboundLocalError:局部变量';pk';分配前参考
我将尝试使用Django fixture文件加载以下模型的数据发布加载Django夹具。UnboundLocalError:局部变量';pk';分配前参考,django,Django,我将尝试使用Django fixture文件加载以下模型的数据 class StaffPosition(models.Model): title = models.CharField(max_length=64) class Rating(models.Model): title = models.CharField(max_length=64) class StaffRatingCombinations(models.Model): staff_position = model
class StaffPosition(models.Model):
title = models.CharField(max_length=64)
class Rating(models.Model):
title = models.CharField(max_length=64)
class StaffRatingCombinations(models.Model):
staff_position = models.ManyToManyField(StaffPosition)
position_rating = models.ManyToManyField(Rating)
和下面的夹具。当我只为staffposition和rating表添加记录时,数据加载良好。当我尝试将外键用于staffratingcombination时,会出现以下错误
[{
"model": "myapp.staffposition",
"pk": 1,
"fields": {
"title": "Lead"
}
},
{
"model": "myapp.rating",
"pk": 1,
"fields": {
"title": "Gold"
}
},
{
"model": "myapp.staffratingcombinations",
"pk": 1,
"fields": {
"staff_position": 1,
"position_rating": 1
}
}]
当我运行loaddata时,我得到:
(myapp) pi@raspberrypi:~/Documents/Development/Myapp/django/myapp $ python3 manage.py loaddata initial_data.json
Traceback (most recent call last):
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/serializers/base.py", line 287, in deserialize_m2m_values
for pk in field_value:
TypeError: 'int' object is not iterable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/serializers/json.py", line 69, in Deserializer
yield from PythonDeserializer(objects, **options)
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/serializers/python.py", line 122, in Deserializer
values = base.deserialize_m2m_values(field, field_value, using, handle_forward_references)
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/serializers/base.py", line 294, in deserialize_m2m_values
raise M2MDeserializationError(e, pk)
UnboundLocalError: local variable 'pk' referenced before assignment
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/management/commands/loaddata.py", line 72, in handle
self.loaddata(fixture_labels)
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/management/commands/loaddata.py", line 114, in loaddata
self.load_label(fixture_label)
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/management/commands/loaddata.py", line 172, in load_label
for obj in objects:
File "/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/serializers/json.py", line 73, in Deserializer
raise DeserializationError() from exc
django.core.serializers.base.DeserializationError: Problem installing fixture '/home/pi/Documents/Development/Myapp/django/myapp/app/fixtures/initial_data.json':
(myapp)pi@raspberrypi:~/Documents/Development/Myapp/django/Myapp$python3 manage.py loaddata initial\u data.json
回溯(最近一次呼叫最后一次):
文件“/home/pi/Documents/Development/Myapp/lib/python3.7/site packages/django/core/serializers/base.py”,第287行,反序列化\u m2m\u值
对于字段_值中的pk:
TypeError:“int”对象不可编辑
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
反序列化程序中的文件“/home/pi/Documents/Development/Myapp/lib/python3.7/site packages/django/core/serializers/json.py”,第69行
PythonDeserializer的收益(对象,**选项)
反序列化程序中的文件“/home/pi/Documents/Development/Myapp/lib/python3.7/site packages/django/core/serializers/python.py”,第122行
values=base。反序列化\u m2m\u值(字段、字段\u值、使用、句柄\u前向\u引用)
文件“/home/pi/Documents/Development/Myapp/lib/python3.7/site packages/django/core/serializers/base.py”,第294行,反序列化\u m2m\u值
升起M2MDeserializationError(e,pk)
UnboundLocalError:赋值前引用了局部变量“pk”
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“manage.py”,第21行,在
main()
文件“manage.py”,第17行,主
从命令行(sys.argv)执行命令
文件“/home/pi/Documents/Development/Myapp/lib/python3.7/site packages/django/core/management/_init__.py”,第401行,从命令行执行
utility.execute()
文件“/home/pi/Documents/Development/Myapp/lib/python3.7/site packages/django/core/management/__init__.py”,第395行,在execute中
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/management/base.py”,第328行,运行时从
self.execute(*args,**cmd_选项)
文件“/home/pi/Documents/Development/Myapp/lib/python3.7/site-packages/django/core/manag
TypeError: 'int' object is not iterable
"staff_position": 1,
"position_rating": 1
"staff_position": [1],
"position_rating": [1]