代码之家  ›  专栏  ›  技术社区  ›  Tony Tom

PostgreSQL的Django错误

  •  1
  • Tony Tom  · 技术社区  · 9 年前

    我试图用PostgreSQL作为数据库引擎运行我的Django应用程序。部署后,我从模板加载程序中收到一个模板渲染错误。这是我用创建的表单 模型选项字段 .

    而且在迁移过程中,我会收到一个错误:

    django.db.utils。编程错误:列“category_parent”不能为 自动强制转换为键入整数提示:您可能需要指定 “正在使用category_parent::integer”。

    我认为从select字段返回索引是导致问题的原因。有没有可能不费吹灰之力就解决这个问题。

    这是该表单的类。

    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',)
    

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

    This is the error I'm getting on my page.

    我的模型类

    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
    

    终端屏幕错误截图

    Terminal screen showing error on migration.

    请帮忙。提前谢谢。

    1 回复  |  直到 9 年前
        1
  •  3
  •   Community pid    7 年前

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

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

    如果你想保留你的数据,你需要

    • 给你的新列一个不同的名称
    • 创建临时列以在转换期间保存数据

    然后需要一系列迁移

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

    参考: "cannot be cast to type integer" error