[英]Error while loading data from fixture
我有以下模型和經理。
class StateManager(models.Manager):
def get_by_natural_key(self, name):
return self.get(name=name)
class State(models.Model):
class Meta:
verbose_name = "State"
verbose_name_plural = "States"
permissions = (
('access_state', 'Can access States'),
)
COUNTRIES = (
('India', 'India'),
('USA', 'USA'),
('Thailand', 'Thailand'),
)
# Managers
objects = StateManager()
# Database fields
name = models.CharField(
'Name',
max_length=100,
unique=True,
help_text='''
100 chars max
'''
)
code = models.CharField(
'Code',
max_length=10,
unique=True,
help_text='''
10 chars max
''',
null=True, blank=True
)
country = models.CharField(
max_length=50,
default="India",
choices=COUNTRIES,
blank=False,
null=False
)
def __str__(self):
return self.name
def natural_key(self):
return self.name
我的夾具文件如下
[
{
"model": "parties.state",
"fields": {
"name": "Andaman and Nicobar",
"code": "AN",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Andhra Pradesh",
"code": "AP",
"country": "India"
}
},
]
我早些時候已將數據轉儲到fixture文件中。 但是當我現在嘗試加載夾具時,我收到以下錯誤...
Traceback (most recent call last):
.....
.....
TypeError: get_by_natural_key() takes 2 positional arguments but 20 were given
.....
.....
File "/home/parijath/Projects/virtualenv/django18/lib/python3.4/site-packages/django/core/serializers/base.py", line 195, in build_instance
obj.pk = Model._default_manager.db_manager(db).get_by_natural_key(*natural_key).pk
django.core.serializers.base.DeserializationError: Problem installing fixture '/home/parijath/Projects/django_projects/webportal18_multipleapps/parties/fixtures/states.json': get_by_natural_key() takes 2 positional arguments but 20 were given
natural_key
方法應該返回一個元組,而不是一個字符串。
def natural_key(self):
return (self.name,)
如果natural_key
是一個字符串"Andaman and Nicobar"
而不是一個元組('Andaman and Nicobar',)
那么*natural_key
將解壓縮字符串中的每個字符作為一個單獨的參數。 與self
,它會從您的錯誤消息中提供20個參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.