无法在Django中更改模型字段类型

时间:2018-11-03 01:39:49

标签: python django django-models

我有一个模型 ReservationSupplement

class ReservationSupplement(models.Model):
    reservation_hotel = models.ForeignKey(ReservationHotel, on_delete=models.CASCADE, related_name='supplements', verbose_name=_("Hotel Supplements"))
    supplement = models.CharField(max_length=10)

我想将其更改为:

class ReservationSupplement(models.Model):
    reservation_hotel = models.ForeignKey(ReservationHotel, on_delete=models.CASCADE, related_name='supplements', verbose_name=_("Hotel Supplements"))
    supplement = models.ForeignKey('RatesManagerApp.Product', on_delete=models.PROTECT, related_name='reservations', verbose_name=_("Supplement"))

我对makemigrations没问题,但是当我运行migrate时,出现此错误:django.db.utils.ProgrammingError: column "supplement" does not exist

我不知道是什么原因造成的,因为回溯仅给了我Django模块,却不知道导致错误发生的原因。

1 个答案:

答案 0 :(得分:0)

要检查的内容:

  1. 首先复制任何重要数据,然后删除该应用程序内的迁移文件夹。

  2. 如果您打算在ForeignKey,中的模型中使用app_name路径,则它必须类似于'app_name.ModelName'。因此,如果要像这样使用它,请确保您的app_name具有适当的大小写敏感性(尽管您应该将{_1}之外的所有小写字母都使用小写字母,因为您拥有它的方式使其看起来像一个Model)在模型中,因此可能是Product,但在指定路径时不是很好的约定)