【发布时间】:2015-09-22 22:24:31
【问题描述】:
所以我的数据库中有一个模型,我现在意识到创建主键没有意义。我想从字段中删除主键属性并使用默认的 django 自动字段作为主键。我怎样才能做到这一点?如果我尝试删除 primary_key 属性,它会创建新的 id 字段,但会要求默认值。如果我尝试创建一个新的 id = autofield 它会做同样的事情。
代码如下...
class Textbook(models.Model):
textbook_name = models.CharField(max_length = 200)
class_name = models.CharField(max_length = 200)
author = models.CharField(max_length = 200)
isbn = models.CharField(max_length = 200)
auto_id = models.AutoField(primary_key = True)
@property
def NumWishes(self):
return self.wishlist_set.count()
@property
def NumPosts(self):
return self.posting_set.count()
@property
def DemSup(self):
if (self.posting_set.count() != 0):
showmethemoney = float((self.wishlist_set.count()))/(self.posting_set.count())
else:
showmethemoney = 0
return showmethemoney
class Meta:
unique_together = ('class_name', 'isbn')
def __str__(self):
return self.textbook_name
最初 isbn 是主键,但我现在想添加一个带有类名的 unique_together 字段,因此我要从 isbn 中删除主键属性。该表目前是空的,这应该会更容易。
谢谢。
【问题讨论】:
-
我怀疑你可以在不完全删除表格的情况下做到这一点。
-
那么,注释掉与表有关的所有内容,运行 psql 并删除表,取消注释并生成迁移?
-
不要认为您需要注释掉任何内容。只需删除 psql 中的表,删除所有现有的迁移,然后再次进行迁移。
-
好的,谢谢,我试试看。
标签: python django postgresql django-models primary-key