从数据库获取主键(Python / Django)

时间:2017-04-24 09:25:22

标签: python django database primary-key hashids

我尝试使用Hashids,当我手动输入要编码的数字时,它会起作用,但如果我尝试从每个表格行对主键进行编码,则无法正常工作。

models.py

from hashids import Hashids
from django.db import models

class AddToDatabase(models.Model):

    hashids = Hashids()
                                  # hasids.encode(123) works correctly
    slug = models.CharField(default=hashids.encode(pk), max_length=12)

上述说pk未定义,无论我尝试导入什么。

2 个答案:

答案 0 :(得分:1)

你不能做你现在正在尝试的事情(因为INSERT只有在class AddToDatabase(models.Model): hashids = Hashids() slug = models.CharField(max_length=12) def save(self, *args, **kwargs): super(AddToDatabase, self).save(*args, **kwargs) self.slug = self.hashids.encode(self.pk) super(AddToDatabase, self).save(*args, **kwargs) 操作后才能获得价值)。一个选项是

glob

答案 1 :(得分:0)

另一种解决方案是按需计算hashid

class AddToDatabase(models.Model):

    @property
    def slug(self):
        hashids = Hashids()
        return hashids.encode(self.pk)