如何在Django RF项目中使用UUID作为主键来保留原始ID?

时间:2019-02-05 08:22:42

标签: mysql django django-rest-framework uuid id

我想在我的DRF数据库应用程序中使用两个不同的主键。默认情况下,django将“ id” ID创建为PK,但是当我尝试在模型中定义新字段时(uuid = models.UUIDField(primary_key = True,default = uuid.uuid4,editable = False)),未定义默认id字段(在数据库中仅存在uuid)。

如何初始化它们?

我可以提到我没有在模型中定义id字段,因为它是(或者应该是-我想是)由DRF添加的。

class Store(models.Model):
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, 
editable=False)
    name = models.CharField(max_length=100, blank=False)
    url = models.URLField(max_length=300, blank=False)
    country = models.CharField(max_length=100, blank=True)

1 个答案:

答案 0 :(得分:0)

主键

在数据库的关系模型中,主键是对属性(列)的最小集合的特定选择,这些属性(列)唯一指定关系(表)中的元组(行)。

因此,您可以使用默认主键valuesid(您的选择)。

如果两者都想要,请改用uuid

unique=True

根据您的情况,您可以将模型更改为

class Store(models.Model):
  uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False)
  name = models.CharField(max_length=100, blank=False)
  url = models.URLField(max_length=300, blank=False)
  country = models.CharField(max_length=100, blank=True)