【发布时间】:2021-12-02 07:12:32
【问题描述】:
我有一套django模型如下
class FirstCategory(models.Model):
first_category = models.CharField(max_length=200)
def __str__(self):
return self.first_category
class SecondCategory(models.Model):
first_category = models.ForeignKey(FirstCategory, on_delete=models.CASCADE)
second_category = models.CharField(max_length=200)
def __str__(self):
return self.second_category
class ThirdCategory(models.Model):
first_category = models.ForeignKey(FirstCategory, on_delete=models.CASCADE)
second_category = models.ForeignKey(SecondCategory, on_delete=models.CASCADE)
third_category = models.CharField(max_length=200)
def __str__(self):
return self.third_category
class FinalList(models.Model):
unique_number = models.BigIntegerField()
name = models.CharField(max_length=200)
first_category = models.ForeignKey(FirstCategory, on_delete=models.SET_NULL, null=True, db_column="first_category")
second_category = models.ForeignKey(SecondCategory, on_delete=models.SET_NULL, null=True, db_column="second_category")
third_category = models.ForeignKey(ThirdCategory, on_delete=models.SET_NULL, null=True, db_column="third_category")
def __str__(self):
return self.name
当我迁移模型并检查 FinalList 表中字段的数据类型时,我得到以下信息
column_name | data_type
---------------------------+-------------------
third_category | bigint
first_category | bigint
second_category | bigint
unique_number | bigint
name | character varying
我已将第一、第二和第三类指定为字符字段。为什么要迁移为 BigInt?
我正在尝试在我的表单中实现链式下拉菜单。我正在关注SimpleBetterThanComplex 教程
编辑1:迁移文件的内容
在迁移文件中,我有以下内容
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
我没有自己指定。我认为 Django 将其创建为自动主字段。这会影响ForeignKeys 的数据类型吗?
【问题讨论】:
-
能否请您检查您上次迁移文件的数据类型是否已更改?
-
@Mythilydevaraj 我尝试删除所有迁移并再次迁移。我得到相同的结果
-
你在 makemigrations 之后是否运行了 migrate 命令?能否请您分享迁移文件,单独的特定字段
-
@Mythilydevaraj 我已经编辑了这个问题。我应该添加整个迁移文件吗?
-
主键是自动生成的,不会影响数据类型。
标签: python django django-models django-forms