Search code examples
djangodjango-modelsdjango-authentication

Users in initial data fixture


I'm creating a few users by default in my fixtures/initial_data.json so as to have some testing "subjects." The problem I'm experiencing is password generation. I could set the password in the 'fields', but that won't generate a hashed password:

[
    { "model": "auth.user",
        "pk": 1,
        "fields": {
            "username": "user1",
            "password": "password"
        }
    }
]

I need a way to generate the user's password. Do I have to do this manually and generate a string like {hash_method}${salt}${hashed_password} like Django does?


Solution

  • What might be easier in this case (and if you only need a few users) is to create some fake user accounts through the admin (including passwords) and then dump the users to a fixtures file using dumpdata:

    $ python manage.py dumpdata auth.User --indent 4 > users.json
    

    which will automatically create the fixtures for you and can be used later with loaddata

    (You could just create one fake account and use the hash in the rest of your fixtures if you needed lots of test users)

    https://docs.djangoproject.com/en/dev/ref/django-admin/#dumpdata-appname-appname-appname-model