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