Python Django中的重复模型字段

Python Django中的重复模型字段,python,django,django-migrations,Python,Django,Django Migrations,重复的模型字段给我带来了麻烦(当我运行我的网页时,没有这样的表appname\u modelname)。每当我迁移/manage.py appname时,它都会给我“重复字段”。我检查了我的模型。哎,那里只有一个。如何删除该重复字段?看来不管我做什么,它都会留下来。我试过: 删除数据库 正在删除应用程序文件夹中的迁移文件夹 正在执行./manage.py sqlclear south,然后在dbshell中删除south_migrationhistory表 ./manage.py schema

重复的模型字段给我带来了麻烦(当我运行我的网页时,没有这样的表appname\u modelname)。每当我迁移/manage.py appname时,它都会给我“重复字段”。我检查了我的模型。哎,那里只有一个。如何删除该重复字段?看来不管我做什么,它都会留下来。我试过:

  • 删除数据库

  • 正在删除应用程序文件夹中的迁移文件夹

  • 正在执行./manage.py sqlclear south,然后在dbshell中删除south_migrationhistory表

  • ./manage.py schemamigration appname--初始值,./manage.py migrate appname--假

我已经没有主意了

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

不确定,但在这两条线中会导致问题

user = models.ForeignKey(User, null=False)
user_id = models.IntegerField(User, null=True)
最好使用“related name”属性以避免重复错误,因为在数据库中,“user”将被添加为user\u id

user = models.ForeignKey(User, related_name="id_user") # Change the related field as your convenience
user_id = models.IntegerField(null=True, related_name="user_id")

检查这是否解决了您的问题

不确定,但这两行中的问题是由这里引起的

user = models.ForeignKey(User, null=False)
user_id = models.IntegerField(User, null=True)
最好使用“related name”属性以避免重复错误,因为在数据库中,“user”将被添加为user\u id

user = models.ForeignKey(User, related_name="id_user") # Change the related field as your convenience
user_id = models.IntegerField(null=True, related_name="user_id")

检查这是否可以解决您的问题

您不能这样做,对于您的用户外键,Django ORM将创建一个名为
user\u id
(您的外键字段名加上
\u id
)的数据库字段,将其用作数据库中的FK

您不必自己创建此字段(ORM将负责),即使需要,也可以更改属性
user
user\u id
的名称

发件人:

在幕后,Django将“_id”附加到字段名以创建其数据库列名。在上面的示例中,车型的数据库表将有一个
manufacturer\u id
列。(您可以通过指定
db_column
来明确更改此设置)但是,您的代码不必处理数据库列名,除非您编写自定义SQL。您将始终处理模型对象的字段名


您不能这样做,对于您的用户外键,Django ORM将创建一个名为
user\u id
(您的外键字段名加上
\u id
)的数据库字段,将其用作数据库中的FK

您不必自己创建此字段(ORM将负责),即使需要,也可以更改属性
user
user\u id
的名称

发件人:

在幕后,Django将“_id”附加到字段名以创建其数据库列名。在上面的示例中,车型的数据库表将有一个
manufacturer\u id
列。(您可以通过指定
db_column
来明确更改此设置)但是,您的代码不必处理数据库列名,除非您编写自定义SQL。您将始终处理模型对象的字段名


请发布出现重复字段错误的模型。我已经编辑了我的OP。重复是用户id为什么需要用户id?user和user_id都是相同的字段。如果不是很久以前,我会得到一个错误,说这个字段丢失了。我发现这真的很奇怪,但我放弃了调试它,因为我找不到错误。只保留一个字段user=models.ForeignKey(user)…请发布出现重复字段错误的模型。我已经编辑了我的OP。重复是user\u id为什么需要user\u id?user和user_id都是相同的字段。如果不是很久以前,我会得到一个错误,说这个字段丢失了。我发现这很奇怪,但我放弃了调试,因为我找不到错误。只保留一个字段user=models.ForeignKey(user)。。