[英]Create JSON fixture for django models
我已經定義了如下模型:
模型
class User(models.Model):
user_id = models.IntegerField()
user_name = models.CharField(max_length=40)
email = models.EmailField()
city = models.CharField(max_length=40)
class Meta:
ordering = ['user_id']
verbose_name = 'User MetaData'
verbose_name_plural = 'Users MetaData'
def __unicode__(self):
return str(self.user_id)
class VideoData(models.Model):
video = models.CharField(max_length=40)
time = models.IntegerField()
user = models.ForeignKey(User)
class Meta:
verbose_name = 'User_Video MetaData'
verbose_name_plural = 'Users_Video MetaData'
現在,我想使用JSON文件中的“ loaddata”命令更新模型。 我有以下格式的JSON文件:
{
"fields":{
"user id":12026,
"user name":"Paul Graham",
"email":"pgraham0@sun.com",
"city":"China",
"VIdeoData":[
{
"video":"Livetube",
"time":0
},
{
"video":"Leexo",
"time":22
}
]
},
"pk":1,
"model":"graph.user"
},
當我使用“ manage.py loaddata”命令時
error : "User has no field named u'VideoData'"
如何更新字段?
我建議您更新模型,以使它們彼此關聯。
例如,向User
模型添加多對多關系,可能還帶有一個through table
來保存這種關系的屬性(例如,當用戶租用/觀看它時)
class User(models.Model):
user_id = models.IntegerField()
videos = models.ManyToManyField(VideoData, through='VideoRenting', through_fields=('user', 'videodata'))
user_name = models.CharField(max_length=40)
email = models.EmailField()
city = models.CharField(max_length=40)
class Meta:
ordering = ['user_id']
verbose_name = 'User MetaData'
verbose_name_plural = 'Users MetaData'
def __unicode__(self):
return str(self.user_id)
class VideoRenting(models.Model):
user = models.ForeignKey(User)
videodata = models.ForeignKey(VideoData)
rented_at = models.DateTimeField()
有關更多詳細信息,請參見此處 。
顯然,您可以在VideoData類中而不是User類中插入多對多關系。
在數據庫中創建對象,然后使用django-admin-dumpdata將其轉儲為JSON
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.