Django使用大整数作为主键添加多对多

Django使用大整数作为主键添加多对多,django,postgresql,Django,Postgresql,我有一个以正的大整数字段作为主键的用户模型,我想创建一个与角色表的多对多关系,问题是pivot表(包含该关系)是用一个整数字段(user_id)创建的,这不允许我实际为id号高的用户存储任何关系 id = models.PositiveBigIntegerField(unique=True, primary_key=True) 这是我的用户模型: class User(AbstractBaseUser): id = models.PositiveBigIntegerField(uniq

我有一个以正的大整数字段作为主键的用户模型,我想创建一个与角色表的多对多关系,问题是pivot表(包含该关系)是用一个整数字段(user_id)创建的,这不允许我实际为id号高的用户存储任何关系

id = models.PositiveBigIntegerField(unique=True, primary_key=True)
这是我的用户模型:

class User(AbstractBaseUser):
    id = models.PositiveBigIntegerField(unique=True, primary_key=True)
    email = models.EmailField(_("email address"), unique=True)
    display_name = models.CharField(_("Display Name"), max_length=64, blank=True)
    is_active = models.BooleanField(_("active"), default=True)

    is_deleted = models.BooleanField(default=False)

    roles = models.ManyToManyField(Role, related_name="%(app_label)s_%(class)s_related")
这是我的榜样:

class Role(models.Model):
    name = models.CharField(max_length=64)
    is_deleted = models.BooleanField(default=False)
检查下面DB模式的屏幕截图

附言:我尝试用以下方式手动创建关系:

roles = models.ManyToManyField(Role, related_name="%(app_label)s_%(class)s_related", through='UserRoles')
以及创建表:

class UserRoles(models.Model):
    role = models.ForeignKey(Role, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE, to_field='id')

但这也不起作用。

似乎是一个悬而未决的问题。有一些解决方法涉及到创建手动迁移来更改列,我认为3.2应该能够处理这个问题。刚刚听了《Python与我对话》第301集(抄本:-看时间戳23:27)。dl可以使用这个模型吗?谢谢大家,我会关注下一个版本。@JPG我试过了,同样的事情,请检查我的文章结尾。