2015-08-19 2 views
0

Я хочу заполнить базу данных Django, используя manage.py loaddata initial_data.json, где json-файл содержит спецификации нескольких объектов. Моя проблема заключается в том, что у этих объектов есть атрибут user, ссылающийся на объект Django User, чтобы указать, какой пользователь создал их. Модель для этих объектов выглядит следующим образом:Как заполнить базу данных django пользователями

from django.db import models 
from django.contrib.auth.models import User 

class MySpecialModel(models.Model): 
    name = models.CharField(max_length=200) 
    user = models.ForeignKey(User) 

объекты в моей JSON будет выглядеть следующим образом:

[{"fields":{ 
      "name": "some name", 
      "user": XXX 
     } 
...] 

Проблема заключается в том, что я не знаю, что писать вместо XXX для указания пользователя. Я пробовал с именами пользователей, но Django говорит мне, что ожидает номер, где есть XXX. использование числа не приводит к ошибке, но я не вижу, что моя база данных заполнена. Итак, есть ли способ разместить объект Django в файле initial_data.json?

ответ

4

Здесь вы должны написать user.pk, это целочисленное значение.

[{"fields":{ 
      "name": "some name", 
      "user": 1 
     } 
...] 

Очевидно, что пользователь с таким рк должен быть создан, прежде чем импортировать любой объект с помощью внешнего ключа к нему, так что, возможно, легче создать некоторые (подделка или нет) пользователей через администратора до и экспорта они с: python manage.py dumpdata auth.User --indent 4 > users.json

+0

Спасибо, так что нет никакого способа получить пользователя по имени пользователя, я думаю. Это все равно должно сделать трюк. – Zulko

+0

@ Zulko также читает https://docs.djangoproject.com/en/1.8/topics/serialization/#natural-keys – svfat

Смежные вопросы