无法创建Django模型的实例

时间:2019-02-15 18:52:12

标签: python django python-3.x postgresql django-2.1

我正在尝试创建此报告模型的实例:

class Report(models.Model):
    """
    A model for storing credit reports pulled from Equifax.
    """
    user = models.ForeignKey(to=CustomUserModel, on_delete=models.CASCADE,
                             help_text='User report belongs to.')

    timestamp = models.DateTimeField(default=timezone.now)
    report = JSONField()

但是,每当我尝试时都会出现此错误:

Exception Type: TypeError at /internal/report
Exception Value: 'report' is an invalid keyword argument for this function

无论我是使用Report().save()方法还是通过Report.object.create()方法实例化实例,都会发生这种情况:

    report_obj = Report.objects.create(
        user=user,
        report=report
    )

有人知道发生了什么吗?显然,该类具有“报告”属性,为什么会出错?

谢谢!

1 个答案:

答案 0 :(得分:0)

基于错误和comment

  

(...)好像我从DRF导入了表单字段,而不是从Django(...)导入了同名的模型字段

您没有导入作为模型字段的JSONField,而是其他内容(例如 form 字段,或此处的 DRF 字段)。结果,Django不会将report视为您的Report模块的字段,而是将其视为“ vanilla ” Python属性。

因此,您应该确保JSONField链接到模型字段类。添加此类字段可能会导致另一次迁移,以将该字段添加到数据库表中:

from django.contrib.postgres.fields import JSONField

class Report(models.Model):
    """
    A model for storing credit reports pulled from Equifax.
    """
    user = models.ForeignKey(to=CustomUserModel, on_delete=models.CASCADE,
                             help_text='User report belongs to.')

    timestamp = models.DateTimeField(default=timezone.now)
    report = JSONField()