Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 在Django的loaddata中设置外键_Json_Django_Python 2.7_Django Models - Fatal编程技术网

Json 在Django的loaddata中设置外键

Json 在Django的loaddata中设置外键,json,django,python-2.7,django-models,Json,Django,Python 2.7,Django Models,我设置了两个类,其中一个用户可能有多个访问密钥 class User(models.Model): first_name = models.CharField(max_length=50) middle_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) email = models.EmailField() password = models

我设置了两个类,其中一个用户可能有多个访问密钥

class User(models.Model):
    first_name = models.CharField(max_length=50)
    middle_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    email = models.EmailField()
    password = models.CharField(max_length=50)
    birthday = models.DateField()

    def __str__(self):
        return self.first_name+" "+self.last_name

class pets(models.Model):
    user = models.ForeignKey('User')
    type = models.CharField(max_length=50)
    color = models.CharField(max_length=50)

    def __str__(self):
        return self.type
我试图通过一个json文件使用loaddata将数据预加载到表中,该文件如下所示:

[
{
    "fields": {
        "first_name": "John",
        "last_name": "Doe",
        "middle_name": "G",
        "birthday": "1900-07-21",
        "password": "goforit123",
        "email": "John.Doe@gmail.com"
        },
        "model": "account_data.user",
    "pk": 1
},
{
    "fields": {
        "user": "????"
        "type": "dog",
        "color": "blue"
    },
    "model": "account_data.pets",
    "pk": 1
}
]
对于宠物类,我应该在用户中输入什么


多谢

您只需使用要链接的对象的反pk即可:

[
{
    "fields": {
        "first_name": "John",
        "last_name": "Doe",
        "middle_name": "G",
        "birthday": "1900-07-21",
        "password": "goforit123",
        "email": "John.Doe@gmail.com"
    },
    "model": "account_data.user",
    "pk": 1  // This is the pk you have to use
},
{
    "fields": {
        "user": 1,  // Use the pk, in this case you're referencing to John Doe
        "type": "dog",
        "color": "blue"
    },
    "model": "account_data.pets",
    "pk": 1
}
]

假设用户已经加载,您不知道pk。有办法找到它吗?这里没有,您不在JSON文件中应用逻辑。请记住,这是加载初始/测试数据,因此,如果您有previuos用户将其添加到此JSON文件中。但是是否有方法在.py文件中编写代码以查找外键,然后使用适当的pk生成.JSON?当然,您可以创建,比如:
python manage.py查找_pks
并编写一些代码来探索数据库并在那里编写JSON文件。