有没有办法在创建新模型时不必为外键传递模型实例?假设我有以下模型:
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 并且只想将记录插入到 bar 表中。
如果我做:
new_bar = Bar(info="something important", foo=foo_id)
new_bar.save()
我收到一个 ValueError 说“无法分配”546456487466L”:“Bar.foo”只是一个“Foo”实例。
所以,我明白了……它希望我有一个 Foo 模型的实际实例。我知道我可以在 Foo 上做一个 get 然后将它传递进去。但是,似乎必须有一种方法来覆盖这个功能。我做了一些谷歌搜索和阅读文档,管理员中的 raw_id_fields 似乎是基本思想。(也就是说,在这里允许一个原始 id)。但是,在 ForeignKey 字段中看不到此选项。
必须往返于数据库以获取对象以获取 id(我已经拥有)似乎非常低效。我知道进行往返可以验证 id 是否存在于数据库中。但是,嘿...这就是为什么我使用 RDBMS 并首先拥有外键的原因。
谢谢