Error while loading data from fixture

64 views
Skip to first unread message

Parijatha Kumar Pasupuleti

unread,
Jan 6, 2016, 9:29:09 AM1/6/16
to Django users
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/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


-------------------------------------------------------------------------


Pl help.

Parijatha Kumar Pasupuleti

unread,
Jan 6, 2016, 11:01:34 AM1/6/16
to Django users
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 ...

"

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.

"

Reply all
Reply to author
Forward
0 new messages