Django中的重复模型字段

KSH*_*HMR 0 python django django-migrations

重复的模型字段给我带来麻烦(当我运行我的网页时没有这样的表appname_modelname).每当我执行./manage.py迁移appname时,它会给我"重复字段".我检查了我的models.py,其中只有一个.如何删除该重复字段?似乎无论我做什么,它都会停留.我试过了:

  • 删除数据库

  • 删除app文件夹中的迁移文件夹

  • 执行./manage.py sqlclear south,然后在dbshel​​l中删除south_migrationhistory表

  • ./manage.py schemamigration appname --initial,./ manage.py migrate appname --fake

我已经没想完了.

class Document(models.Model):
    filename = models.CharField(max_length=255, blank=True, null=True, default=None)
    identity = models.CharField(max_length=255, default=None, null=True)
    user = models.ForeignKey(User, null=False)
    user_id = models.IntegerField(User, null=True)
    docfile = models.FileField(upload_to=_upload_path, storage=fs) # upload_to is a path inside the storage path

    def get_upload_path(self,filename):
        return str(self.user.id) + '/' + str(date.today()) + '/' + filename
Run Code Online (Sandbox Code Playgroud)

Mou*_*nir 5

您不能这样做,对于您的用户外键,Django ORM将创建一个名为user_id(您的外键字段名称加_id)的数据库字段,以将其用作数据库中的FK.

您不必自己创建此字段(ORM会照顾),即使您需要它,也可以更改属性的名称useruser_id.

文档:

在幕后,Django将"_id"附加到字段名称以创建其数据库列名称.在上面的示例中,Car模型的数据库表将具有一manufacturer_id列.(您可以通过指定显式更改此内容db_column)但是,除非编写自定义SQL,否则您的代码永远不必处理数据库列名.您将始终处理模型对象的字段名称.