繁体   English   中英

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

[英]Django - How to remove primary_key attribute from field?

因此,我在数据库中有了一个模型,现在我意识到创建主键没有任何意义。 我想从字段中删除主键属性,并使用默认的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中删除主键属性。 该表当前为空,这将使此操作更容易。

谢谢。

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

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

-删除所有表,然后物理上进入migrations文件夹,并删除除init .py外的所有内容。 (这工作)

可以通过运行以下命令来完成在postgresql数据库中删除表的操作:DROP TABLE“ tablename”;

我现在在我的应用程序中进行了一次迁移,但是一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM