Django - 如何从字段中删除primary_key属性?

时间:2015-09-22 22:24:31

标签: python django postgresql django-models primary-key

所以我在我的数据库中有一个模型,我现在已经意识到制作主键是没有意义的。我想从字段中删除主键属性并使用默认的django autofield作为主键。我怎样才能做到这一点?如果我尝试删除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中删除了主键属性。该表目前是空的,这应该使这更容易。

感谢。

1 个答案:

答案 0 :(得分:-1)

我在尝试迁移之前尝试过的事情:

- 使用命令删除所有表并清除迁移(不为我工作)

- 删除所有表并实际进入迁移文件夹并删除除 init .py之外的所有内容。 (这有效)

可以通过运行以下命令来完成postgresql数据库中的删除表: DROP TABLE" tablename&#34 ;;

我现在在我的应用程序中有一个迁移,但一切正常。