(Django) 安装夹具“rules.json”时出现问题:“NoneType”对象没有属性“id”

Posted

技术标签:

【中文标题】(Django) 安装夹具“rules.json”时出现问题:“NoneType”对象没有属性“id”【英文标题】:(Django) Problem installing fixture 'rules.json': 'NoneType' object has no attribute 'id' 【发布时间】:2020-12-27 01:52:02 【问题描述】:

我正在尝试使用下一个命令来填充我的数据库:

python .\manage.py 加载数据 .\rules\fixtures\rules.json

但我得到下一个错误:

AttributeError: 安装夹具时出现问题 'C:\Users\Ángel - Trabajo\Documents\AVC.\rules\fixtures\rules.json': 'NoneType' 对象 没有属性“id”

这是我的模型:

class Rule(LogsMixin, models.Model):
    """Definición de modelo para Reglas"""

    FIELDS = [
        ('user_name', 'Nombre de usuario'),
        ('user_code', 'Codigo de usuario')
    ]

    string = models.CharField("Cadena de referencia", max_length=100, null=False, default="", blank=False)
    profile = models.ForeignKey(Profile, null=False, default=None, on_delete=models.DO_NOTHING)
    license = models.ForeignKey(License, null=False, default=None, on_delete=models.DO_NOTHING)
    field = models.CharField("Campo objetivo", max_length=50, default='nombre_usuario', choices=FIELDS)
    include = models.BooleanField("Incluye", null=False, default=True)
    order = models.IntegerField("Orden", null=True, default=None)
    uppercase_sensitive = models.BooleanField("Sensible a las mayúsculas", null=False, default=False)
    dateadded = models.DateTimeField("Fecha de inserción", default=datetime.datetime.now)

这是我的 json:

[
    
        "model":"rules.rule",
        "pk":null,
        "fields":
            "string": "DINAMITZADORA",
            "profile": "1",
            "license": "1",
            "field": "user_name",
            "include": "1",
            "order": "0",
            "uppercase_sensitive": "0"
        
    ,
    
        "model":"rules.rule",
        "pk":null,
        "fields":
            "string": "adm",
            "profile": "1",
            "license": "1",
            "field": "user_name",
            "include": "1",
            "order": "0",
            "uppercase_sensitive": "0"
        
    ,
    
        "model":"rules.rule",
        "pk":null,
        "fields":
            "string": "admin",
            "profile": "1",
            "license": "1",
            "field": "user_name",
            "include": "1",
            "order": "0",
            "uppercase_sensitive": "0"
        
    ,
    
        "model":"rules.rule",
        "pk":null,
        "fields":
            "string": "alum",
            "profile": "1",
            "license": "1",
            "field": "user_name",
            "include": "1",
            "order": "0",
            "uppercase_sensitive": "0"
        
    ,
]

我尝试在我的 settings.py 中声明 FIXTURE_DIRS 但没有奏效。 我试图让 json 中只有一个元素(它有 80 个)以防万一它有一些价值,但它也不起作用。

我完全迷路了,你能帮帮我吗?

谢谢你们:)

【问题讨论】:

为什么您的夹具对象的 ID 有 null 值? 我读到如果你写 null 它只是分配一个自动增量数字 【参考方案1】:

这个 json 是你自己输入的吗?

我是怎么做的,我从一个干净的数据库开始,然后通过 Web 界面添加一些数据,然后执行以下命令:

python .\manage.py dumpdata your_appname --indent 4 > .\rules\fixtures\rules.json

所以稍后当您有一个空数据库时,您可以使用您的命令再次加载数据:

python .\manage.py loaddata .\rules\fixtures\rules.json

如果您在loaddata 之后指定路径,则FIXTURE_DIRS 将被忽略,因此您不应在settings.py 文件中设置它。

保存固定装置的最佳做法是在位置your_app/fixtures/somename.json 但我认为是这种情况,因为我认为您的应用程序被称为规则?

如果您这样做,django 将知道在哪里查找,您只需键入而不是提供整个路径。

python .\manage.py loaddata some_name.json

【讨论】:

以上是关于(Django) 安装夹具“rules.json”时出现问题:“NoneType”对象没有属性“id”的主要内容,如果未能解决你的问题,请参考以下文章

安装夹具时 Django 1.10 引发错误:没有这样的列:REFERRED.id

安装夹具(SQLite3 数据库)时,cygwin 上的 Django loaddata 命令返回错误

带有自定义用户模型加载夹具错误的 Django 项目

Django - 夹具中的外键

Django 夹具未加载 loaddata

加载夹具时 django unittest 出错