7

据我了解,模型管理器的 get_by_natural_key 用于反序列化,而 natural_key 用于序列化。这是真的 ?如果不是,有什么区别?

而且,我们是否需要始终提供 --natural-foreign 和 --natural-primary 键?有没有办法通过自然键强制序列化/反序列化?

4

1 回答 1

4

正如您所说,Djangoget_by_natural_key用于反序列化和natural_key序列化。

如文档中所述,您不需要同时定义它们。您只能安全地使用其中之一。

如果您需要使用代码中的自然键序列化模型,则必须使用serializers.serialize()withuse_natural_foreign_keys=True和/或use_natural_primary_keys=True.

如果您需要使用自然键序列化/反序列化某些对象,admin.py dumpdata那么您必须传递--natural-foreign和/或--natural-primary如果您不这样做,它们将使用默认(非自然)行为进行序列化/反序列化。

要“强制”自然键,dumpdata您可以创建一个 shell 别名。

如果您需要更高级的模型序列化/反序列化,我建议您使用外部组件,如Django REST Framework 序列化程序或编写自己的。

于 2014-08-25T19:33:28.430 回答