I've posted this question in stackoverflow at http://stackoverflow.com/questions/34636107/error-while-loading-data-from-fixture. The solution was posted by one Alasdair. For reference, his answer is pasted below ...
"
On Wednesday, 6 January 2016 19:59:09 UTC+5:30, Parijatha Kumar Pasupuleti wrote:
-- "
The natural_key method should return a tuple, not a string.
def natural_key(self): return (self.name,) If natural_key is a string "Andaman and Nicobar" instead of a tuple ('Andaman and Nicobar',) then *natural_key will unpack each of the 19 characters in the string as a separate argument. Along with self, that gives you 20 arguments from your error message.
On Wednesday, 6 January 2016 19:59:09 UTC+5:30, Parijatha Kumar Pasupuleti wrote:
Hai !
I have the following model and manager.
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
------------------------------------------------------------ --------------------------
My fixture file is given below ....
[
{
"model": "parties.state",
"fields": {
"name": "Andaman and Nicobar",
"code": "AN",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Andhra Pradesh",
"code": "AP",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Arunachal Pradesh",
"code": "AR",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Assam",
"code": "AS",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Bihar",
"code": "BR",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Chandigarh",
"code": "CH",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Chhattisgarh",
"code": "CG",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Dadra and Nagar Haveli",
"code": "DN",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Daman and Diu",
"code": "DD",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Delhi",
"code": "DL",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Goa",
"code": "GA",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Gujarat",
"code": "GJ",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Haryana",
"code": "HR",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Himachal Pradesh",
"code": "HP",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Jammu and Kashmir",
"code": "JK",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Jharkhand",
"code": "JH",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Karnataka",
"code": "KA",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Kerala",
"code": "KL",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Lakshdweep",
"code": "LD",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Madhya Pradesh",
"code": "MP",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Maharashtra",
"code": "MH",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Manipur",
"code": "MN",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Meghalaya",
"code": "ML",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Mizoram",
"code": "MZ",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Nagaland",
"code": "NL",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Odisha (Orissa)",
"code": "OD",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Puducherry (Pondicherry)",
"code": "PY",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Punjab",
"code": "PB",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Rajasthan",
"code": "RJ",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Sikkim",
"code": "SK",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Tamil Nadu",
"code": "TN",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Tripura",
"code": "TR",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Uttar Pradesh",
"code": "UP",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Uttarakhand",
"code": "UK",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "West Bengal",
"code": "WB",
"country": "India"
}
},
{
"model": "parties.state",
"fields": {
"name": "Telangana",
"code": "TL",
"country": "India"
}
}
]
------------------------------------------------------------ ------------------------------ -------------------------
I've earlier dumped the data to a fixture file. But when I am trying to load the fixture now, I am getting the following error ...
Traceback (most recent call last):
File "/home/parijath/Projects/virtualenv/django18/lib/ Pl help.python3.4/site-packages/ django/core/serializers/json. py", line 79, in Deserializer
for obj in PythonDeserializer(objects, **options):
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/serializers/ python.py", line 157, in Deserializer
obj = base.build_instance(Model, data, db)
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
TypeError: get_by_natural_key() takes 2 positional arguments but 20 were given
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/management/__init_ _.py", line 354, in execute_from_command_line
utility.execute()
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/management/__init_ _.py", line 346, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/management/base. py", line 394, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/management/base. py", line 445, in execute
output = self.handle(*args, **options)
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/management/ commands/loaddata.py", line 60, in handle
self.loaddata(fixture_labels)
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/management/ commands/loaddata.py", line 100, in loaddata
self.load_label(fixture_label)
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/management/ commands/loaddata.py", line 151, in load_label
for obj in objects:
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/serializers/json. py", line 85, in Deserializer
six.reraise(DeserializationError, DeserializationError(e), sys.exc_info()[2])
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/serializers/json. py", line 79, in Deserializer
for obj in PythonDeserializer(objects, **options):
File "/home/parijath/Projects/virtualenv/django18/lib/ python3.4/site-packages/ django/core/serializers/ python.py", line 157, in Deserializer
obj = base.build_instance(Model, data, db)
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
------------------------------------------------------------ -------------
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/2f9425cc-d8c8-41ba-9162-05139bdd4f64%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment