(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