python - 如何在 Django 1.6 模型装置中使用某些字段而不是主键?

标签 python django django-fixtures

我需要在不使用主键的情况下转储和加载模型对象的固定装置。模型是平的。我了解 Django 中的自然键,花了很多时间阅读文档,但所有文档都有仅使用自然键而不是关系(fk/m2m)的解决方案。这完全不是我需要的。

我需要这样的东西:

(模型.py)

class Template(models.Model):
    name = models.CharField(_('name'), max_length=100)
    content = models.TextField(_('content'), blank=True)

    def natural_key(self):
        return (self.name,)

(fixture1.json)

[
{
    "pk": null,
    "model": "dbtemplates.Template",
    "fields" {
        "content": "",
        "name": "product"
    }
}
]

命令之后

./manage.py <SOME_LOADDATA_COMMAND> fixture1.json --natural

我需要更新名称为“product”的模板对象或插入它。

标准 Django 命令不会执行此操作。请帮我解决任何问题。也许有一些库可以做到这一点?我很困惑。

Django 1.6。 Python 2.7

最佳答案

Django 1.6 没有提供使用自然主键转储数据的方法,但 Django 1.7 提供了。

不幸的是,基本 Django 1.6 序列化程序不支持 use_natural_primary_keys 关键字参数:https://github.com/django/django/blob/1.6.11/django/core/serializers/base.py#L20

因此,我建议您要么升级到 django 1.7(我完全理解这并不总是可行),要么编写自己的序列化器,从基本 Django 1.7 序列化器 ( https://github.com/django/django/blob/1.7.11/django/core/serializers/base.py ) 中汲取灵感。

关于python - 如何在 Django 1.6 模型装置中使用某些字段而不是主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39011469/

相关文章:

javascript - 对 Django 表单的 AJAX 或 Javascript POST 请求并获取结果

python - Django ORM orderby exact/prominent match 排在最前面

Django,运行 'test' 返回我的命令文件的路径

python - 如何为没有字段的模型制作 Django 固定装置?

python - 给定三个点的坐标,如何判断定义的三角形是等边、等腰还是不等边三角形?

python - 列表理解 : Elegantly strip and remove empty elements in list

python - 2 个 numpy 二维数组的散点图

python - 在 pandas MultiIndex DataFrame 中按级别对列求和

django - 如何在 Django 中使用 QuerySet 制作夹具?

python - 具有自然键的 Django loaddata 不查询正确的外键