擅长:python、mysql、java
<p>最后,我修改了django python序列化程序,以便它直接获取被引用对象的id,而不是从db获取它</p>
<pre><code>from django.core.serializers.python import Serializer as PythonSerializer
from django.core.serializers.python import Deserializer
class Serializer(PythonSerializer):
internal_use_only = False
def handle_fk_field(self, obj, field):
if not self.use_natural_keys:
# directly get the id
self._current[field.name] = getattr(obj, field.attname)
return
return super(Serializer, self).handle_fk_field(obj, field)
</code></pre>
<p>我不确定它是否处理了所有<code>ForeighKey</code>用例,但它适用于<code>company = models.ForeignKey(Company)</code>这样的简单情况</p>
<p>还需要在中注册序列化程序设置.py在</p>
^{pr2}$
<p>我还为此提交了一个<a href="https://code.djangoproject.com/ticket/17602" rel="nofollow">bug</a>,它现在已在django trunk中修复。
<a href="https://code.djangoproject.com/changeset/17439" rel="nofollow">see changset</a></p>