Python 通过自然密钥获取密钥和自然密钥之间的区别

Python 通过自然密钥获取密钥和自然密钥之间的区别,python,django,django-models,natural-key,Python,Django,Django Models,Natural Key,据我所知,模型管理器的get_by_natural_键用于反序列化,natural_键用于序列化。这是真的吗?如果没有,区别是什么 而且,我们是否需要始终提供--自然外键和--自然主键?有没有办法通过自然键强制序列化/反序列化?正如您所说,Django使用get\u by\u natural\u key进行反序列化,使用natural\u key进行序列化 正如文档中所述,您不需要同时定义它们。您只能安全地使用其中一个 如果需要在代码中使用自然键对模型进行序列化,则必须使用序列化器。serial

据我所知,模型管理器的get_by_natural_键用于反序列化,natural_键用于序列化。这是真的吗?如果没有,区别是什么


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

正如您所说,Django使用
get\u by\u natural\u key
进行反序列化,使用
natural\u key
进行序列化

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

如果需要在代码中使用自然键对模型进行序列化,则必须使用
序列化器。serialize()
with
use_natural\u foreign\u keys=True
和/或
use_natural\u primary\u keys=True

如果需要使用自然键和
admin.py dumpdata
对某些对象进行序列化/反序列化,则必须传递
--natural foreign
和/或
--natural primary
,否则将使用默认(非自然)行为对其进行序列化/反序列化

要在
dumpdata
中“强制”自然键,可以创建shell别名

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