无法创建Django mod的实例

2024-04-26 11:06:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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
    )

有人知道发生了什么事吗?该类显然有一个“report”属性,那么为什么会出现错误呢?你知道吗

谢谢!你知道吗


Tags: to实例方法模型reportformodel报表
1条回答
网友
1楼 · 发布于 2024-04-26 11:06:37

基于错误和comment

(...) Looks like I imported the form field from DRF instead of the model field of the same name from Django (...)

您没有导入作为模型字段的^{},而是导入其他字段(例如表单字段,或者这里是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()

相关问题 更多 >