Django ForeignKey实例与原始ID

时间:2012-05-16 16:29:15

标签: django django-models

在创建新模型时,是否有办法不必传入外键的模型实例?假设我有以下模型:

class Foo(models.Model):
    description = models.CharField(max_length=100)

    class Meta:
         db_table = u'foo'

class Bar(models.Model):
    info = models.CharField(max_length=100)
    foo = models.ForeignKey('Foo')

    class Meta:
         db_table = u'bar'

后一个帖子请求进入视图 - 我知道foo记录的id,只想在条形图表中插入记录。

如果我这样做:

new_bar = Bar(info="something important", foo=foo_id)
new_bar.save()

我得到一个ValueError,说“无法分配”546456487466L“:”Bar.foo“只是一个”Foo“实例。

所以,我明白了......它希望我有一个Foo模型的实际实例。我知道我可以做一个Foo然后传入它。但是,似乎必须有一种方法来覆盖这个功能。我做了一些谷歌搜索和阅读文档,管理员中的raw_id_fields似乎是基本的想法。 (也就是说,在这里允许原始id)。但是,不要在ForeignKey字段上看到此选项。

对数据库进行往返以获取对象来获取id(我已经拥有)似乎非常低效。我知道进行往返验证了数据库中存在的id。但是,嘿......这就是我使用RDBMS并首先拥有外键的原因。

由于

1 个答案:

答案 0 :(得分:21)

new_bar = Bar(info="something important", foo_id=12345)
new_bar.save()

您还可以获得foreign key values directly。某种优化。