【问题标题】:Django Trouble Creating ManyToMany FieldDjango 麻烦创建多对多字段
【发布时间】:2016-11-14 21:44:35
【问题描述】:

将我的 Access 应用程序迁移到 Python/Django。现有数据库,因此使用 Inspectdb 创建模型,我根据需要对其进行调整,直到它们与实际数据库匹配。 Meta 中所有标记为 Manage = False 的模型。

现在我想在父表中添加一个多对多字段,并且遇到了麻烦。模型片段:

class Federalprograms(models.Model):
    fedpgmid = models.IntegerField(db_column='FedPgmID', primary_key=True)  # Field name made lowercase.
    fedpgmname = models.CharField(db_column='FedPgmName', max_length=50)  # Field name made lowercase.
    active = models.IntegerField(db_column='Active', blank=True, null=True, default=0)  # Field name made lowercase.
    seq = models.IntegerField(db_column='Seq', blank=True, null=True, default=0)  # Field name made lowercase.
    loanfee = models.DecimalField(db_column='LoanFee', max_digits=10, decimal_places=5, blank=True, null=True, default=0.00000)  # Field name made lowercase.

class Reports(models.Model):
    reportname = models.CharField(db_column='ReportName', primary_key=True, max_length=50)  # Field name made lowercase.
    reporttitle = models.CharField(db_column='ReportTitle', max_length=50, blank=True, null=True)  # Field name made lowercase.
    datefielddefault = models.IntegerField(db_column='DateFieldDefault', blank=True, null=True)  # Field name made lowercase.
    startdatedefault = models.CharField(db_column='StartDateDefault', max_length=15, blank=True, null=True)  # Field name made lowercase.
    enddatedefault = models.CharField(db_column='EndDateDefault', max_length=15, blank=True, null=True)  # Field name made lowercase.
    detailsdefault = models.BooleanField(db_column='DetailsDefault', max_length=1, blank=True, null=False)  # Field name made lowercase.
    totalsdefault = models.BooleanField(db_column='TotalsDefault', max_length=1, blank=True, null=False)  # Field name made lowercase.
    askfedpgm = models.BooleanField(db_column='AskFedPgm', blank=True, null=False, default=0)  # Field name made lowercase.
    fedpgms = models.ManyToManyField('Federalprograms')

所以我添加了“fedpgms”字段,然后进行了似乎可行的 makemigrations,然后进行了迁移,这似乎也可行。但是,连接表,reports_fedpgms 没有创建,当我运行应用程序时,我收到以下错误:

ProgrammingError at /admin/fc6/reports/StatusReport/change/
(1146, "Table 'fc5.reports_fedpgms' doesn't exist")

我尝试将 Reports 表设置为 manage=True,认为这可能会触发连接表的创建,但这只会在迁移过程中导致错误,提示“Reports 表已存在”。

我对这个 Django 东西有点陌生,我做错了什么?

谢谢...

【问题讨论】:

    标签: python mysql django


    【解决方案1】:

    改成

    fedpgms = models.ManyToManyField(Federalprograms)
    

    【讨论】:

    • 我猜是菜鸟的错误。这有点离题,但 makemigrations 说应用程序没有变化。可能与父模型中的 manage=False 有关。我应该为此提出一个新问题吗?
    • @RMittelman 不确定您在说什么。你在哪里写 manage=False?
    • 我没有放进去,但是当你使用 InspectDB 命令从现有数据库创建模型时,它会自动放入。由于数据库存在,您不想创建表。 Manage=False 控制它。它位于每个模型内部的 Meta 类中。
    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 2018-08-09
    • 2021-04-30
    相关资源
    最近更新 更多