提问者:小点点

Django模型元更改在更改元属性时引发错误


我有下面的Django模型,其中managed=False,现在我需要将其更改为managed=True,并添加属性选择版本1的char字段

class TblHoldings(models.Model):
    item_code = models.CharField(unique=True, max_length=5)
    product_name = models.CharField(max_length=45)
    service_provider = models.ForeignKey(TblHoldingsServiceProviders,on_delete=models.CASCADE, related_name='service_provider',db_column='service_provider')
    account_details = models.CharField(max_length=100)
    purchase_cost = models.IntegerField()
    current_value = models.IntegerField()
    power_of = models.CharField(max_length=45, blank=True, null=True)
    purchase_date = models.DateTimeField(blank=True, null=True)
    updated_at = models.DateTimeField(blank=True, null=True)
    created_at = models.DateTimeField(blank=True, null=True)

    def __str__(self):
        return self.product_name + ' at ' + self.service_provider.provider_name

    class Meta:
        verbose_name = 'Holding'
        verbose_name_plural = 'Holdings'
        managed = False
        db_table = 'tbl_holdings'

版本2

FIN_GOAL_TERM =(
    ('L', 'Long Term 7+ years'),
    ('M', 'Medium Term 3-7 years'),
    ('S', 'Short Term <2 years'),
)
class TblHoldings(models.Model):
    item_code = models.CharField(unique=True, max_length=5)
    product_name = models.CharField(max_length=45)
    service_provider = models.ForeignKey(TblHoldingsServiceProviders,on_delete=models.CASCADE, related_name='service_provider',db_column='service_provider')
    account_details = models.CharField(max_length=100)
    purchase_cost = models.IntegerField()
    current_value = models.IntegerField()
    power_of = models.CharField(max_length=45, blank=True, null=True)
    purchase_date = models.DateTimeField(blank=True, null=True)
    goal_term = models.CharField(max_length=40, choices=FIN_GOAL_TERM)
    updated_at = models.DateTimeField(blank=True, null=True)
    created_at = models.DateTimeField(blank=True, null=True)

    def __str__(self):
        return self.product_name + ' at ' + self.service_provider.provider_name

    class Meta:
        verbose_name = 'Holding'
        verbose_name_plural = 'Holdings'
        managed = True
        db_table = 'tbl_holdings'

现在我得到了下面的错误运行使迁移,有人可以建议如何解决这个问题吗??

file"/root/appstaq_fin/venv/lib/python3.6/site-包/django/db/后端/base/schema.py",第447行,add_fieldself.execute(sql,params)File"/root/appstaq_fin/venv/lib/python3.6/site-包/django/db/后端/base/schema.py",第137行,在执行cursor.execute(sql, params)File"/root/appstaq_fin/venv/lib/python3.6/site-包/django/db/后端/utils.py",第99行,在执行返回超级()。执行(sql, params)File"/root/appstaq_fin/venv/lib/python3.6/site-包/django/db/后端/utils.py",第67行,在执行返回自己。_execute_with_wrappers(sql,参数,许多=假,执行器=自己。_execute)File"/root/appstaq_fin/venv/lib/python3.6/site-包/django/db/后端/utils.py",第76行,在_execute_with_wrappers返回执行器(sql,参数,许多,上下文)文件"/root/appstaq_fin/venv/lib/python3.6/site-包/django/db/后端/utils.py",第84行,_execute返回self.cursor.execute(sql,参数)文件"/root/appstaq_fin/venv/lib/python3.6/site-包/django/db/utils.py",第89行,在退出提高dj_exc_value.with_traceback(回溯)从exc_value文件"/root/appstaq_fin/venv/lib/python3.6/site-包/django/db/后端/utils.py",第84行,_execute返回self.cursor.execute(sql,Params)File"/root/appstaq_fin/venv/lib/python3.6/site-包/django/db/后端/mysql/base.py",第71行,在执行返回self.cursor.execute(查询,args)File"/root/appstaq_fin/venv/lib/python3.6/site-包/MySQLdb/cursors.py",_query(查询)File"/root/appstaq_fin/venv/lib/python3.6/site-包/MySQLdb/cursors.py",第315行,_querydb.query(q)File"/root/appstaq_fin/venv/lib/python3.6/site-包/MySQLdb/connections.py",第231行,在查询_mysql.connection.query(自我,查询)django. db. utils中。操作错误:(1060,重复的列名称'power_of')


共1个答案

匿名用户

因此,根据Daniel Roseman的建议,我运行了下面的命令,它解决了我的问题

蟒蛇3管理。py迁移——伪