1

我试图用 PostgreSQL 作为我的数据库引擎来运行我的 Django 应用程序。部署后,我从模板加载器收到模板渲染错误。这是我使用ModelChoiceField创建的表单。

而且在迁移时我得到一个错误说

django.db.utils.ProgrammingError:列“category_parent”不能自动转换为整数类型提示:您可能需要指定“USING category_parent::integer”。

我相信从选择字段返回索引是导致问题的原因。有没有可能在没有太多麻烦的情况下解决这个问题。

这是该表单的类。

class CategoryForm(forms.ModelForm):

def __init__(self, *args, **kwargs):
    super(CategoryForm, self).__init__(*args, **kwargs)
    self.fields['category_parent'].required = False

category_parent = forms.ModelChoiceField(
    queryset=Category.objects.all(), empty_label='None')
category_image = forms.ImageField()

class Meta:
    model = Category
    fields = ('category_name', 'category_code',)

我得到的模板错误的屏幕截图。

这是我在页面上遇到的错误。

我的模型类相同

class Category(models.Model):
    category_name = models.CharField(max_length=300)
    category_code = models.CharField(max_length=100)
    category_parent = models.ForeignKey('self', blank=True, null=True)
    category_image = models.ImageField(upload_to='category')

    def __str__(self):
        return self.category_name

我的终端屏幕上的错误截图

终端屏幕显示迁移错误。

请帮忙。提前致谢。

4

1 回答 1

3

旧的迁移导致了这个问题。

如果您不需要保留数据,请删除表并删除迁移文件夹。再次迁移。

如果要保留数据,则需要

  • 给你的新列一个不同的名字
  • 在过渡期间创建一个临时列来保存数据

然后你需要一系列迁移

添加新(或临时)列的架构迁移 显式移动数据的数据迁移,执行任何所需的转换(例如“A”-> 1)可能是架构迁移删除您的临时列

参考:“不能强制转换为整数类型”错误

于 2015-12-30T07:28:07.440 回答