hen*_*oem 5 python django django-models
djangoproject.com上的Django教程给出了这样的模型:
import datetime
from django.utils import timezone
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length = 200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_recently(self):
now = timezone.now()
return now - datetime.timedelta(days = 1) <= self.pub_date < now
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice_text = models.CharField(max_length = 200)
votes = models.IntegerField(default = 0)
def __unicode__(self):
return self.choice_text
Run Code Online (Sandbox Code Playgroud)
Choice使用ForeignKey,这是一种多对一的关系,所以我应该能够使用一个选择进行多个轮询.如果我尝试从夹具中加载它,如下所示:
[
{
"model": "polls.Poll",
"pk": 3,
"fields": {
"question": "What time do you sleep?",
"pub_date": "2013-07-29T10:00:00+00:00"
}
},
{
"model": "polls.Poll",
"pk": 4,
"fields": {
"question": "What time do you get up?",
"pub_date": "2013-07-29T10:00:00+00:00"
}
},
{
"model": "polls.Choice",
"pk": 4,
"fields": {
"poll": [{"pk": 3}, {"pk": 4}],
"choice_text": "10:00",
"votes": 0
}
}
]
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
DeserializationError: Problem installing fixture '/.../poll/polls/fixtures/initial_data.json': [u"'[{u'pk': 3}, {u'pk': 4}]' value must be an integer."]
Run Code Online (Sandbox Code Playgroud)
或者:
{
"model": "polls.Choice",
"pk": 4,
"fields": {
"poll": [3, 4],
"choice_text": "10:00",
"votes": 0
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
DeserializationError: Problem installing fixture '/.../poll/polls/fixtures/initial_data.json': [u"'[3, 4]' value must be an integer."]
Run Code Online (Sandbox Code Playgroud)
如何从夹具中加载多对一关系?
这是教程中的引用:
最后,请注意使用ForeignKey 定义了一个关系。这告诉 Django 每个 Choice 都与一个 Poll 相关。Django 支持所有常见的数据库关系:多对一、多对多和一对一。
每个都Choice与一个相关Poll,并且您正在尝试将键列表传递到该Choice.poll字段。
但是,每个民意调查都可能与多个选择相关:
{
"pk": 4,
"model": "polls.Choice",
"fields": {
"votes": 0,
"poll": 2,
"choice_text": "Meh."
}
},
{
"pk": 5,
"model": "polls.Choice",
"fields": {
"votes": 0,
"poll": 2,
"choice_text": "Not so good."
}
}
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
2490 次 |
| 最近记录: |