Django.db.utils.ProgrammingError:关系“”不存在

2024-10-01 02:28:18 发布

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

(Django新手)-我希望使用外键创建两个模型。第一个模型称为Portfolio,每个投资组合通过第二个模型Portfoliomember有许多成员。 目前看起来是这样的:

class Portfolio(models.Model):
    portfolio_name = models.CharField(max_length=30, blank=True, null=True)

    def __str__(self):
        return self.portfolio_name

    class Meta:
        db_table = "portfolio"

class PortfolioMember(models.Model):
    portfolio = models.ForeignKey(Portfolio, related_name = "portfoliomember", on_delete=models.CASCADE)
    quality =  models.FloatField(blank=True, null=True)
    def __str__(self):
        return self.portfolio


    class Meta:
        db_table = "portfoliomember"

后来我的目标是在表单中使用formset。但现在,当我尝试创建迁移时,我得到了以下结果:

Running migrations:
  Applying app.0019_auto_20210318_1544...Traceback (most recent call last):
  File "C:\Users\FrankyDoul\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedTable: relation "portfoliomember" does not exist

django.db.utils.ProgrammingError: relation "portfoliomember" does not exist

有没有一个明显的原因说明这不起作用


Tags: name模型selftruedbmodelreturnmodels
1条回答
网友
1楼 · 发布于 2024-10-01 02:28:18

为什么要在元类db_表中定义?我不知道你的应用程序名是什么,但通常你不需要这样做,除非有特定的原因。请参见(https://docs.djangoproject.com/en/3.1/ref/models/options/)“Django自动从模型类和包含它的应用程序的名称中派生数据库表的名称”

因此,当您定义db_table='另一个_名称'时,您将覆盖数据库表名称。我建议删除这一行,即db_table=“portfoliomember”,并查看错误是否仍然存在

相关问题 更多 >