如何在调用save()后获取PK字段

2024-05-15 16:16:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Django的新版本有点棘手,它的想法是在保存之前创建一个实例,在不保存的情况下获取id或pki repeat字段。在

class User(models.Model):
    .....
    slug = models.SlugField(max_length=100, unique=True)


    def save(self, *args, **kwargs):
        """
        I'm need instance of user for access first self.pk
        """
        self.slug = self.get_slug(self.pk)
        return super(User, self).save()

问题还没有确定”自我.pk只有在调用save()之前才能执行此操作,也就是说,在保存之前,我们的想法是要知道如何使用自我.pk“没有早点存钱。在

我想可以,但是有什么不对劲或者做得不好,有什么想法吗?在

^{pr2}$

有什么想法吗?,谢谢。在


Tags: django实例self版本idmodelssave情况
2条回答

我会发表评论,但我没有足够的代表。

我想你有一个弹头场一定是独一无二的? 你想用id(默认的django pk)来填充它? django id字段是AutoField,它在保存时获取值,因此在保存对象之前不能使用它。

一次黑客攻击:

# save in the model
def save(self, *args, **kwargs):
    # get_timestamp should return a string with the current time  > unique
    self.slug = get_timestamp()
    super(User, self).save(*args, **kwargs)
    self.slug = self.get_slug(self.pk)
    super(User, self).save(*args, **kwargs)

Here时间戳字符串的示例。如果你想自己制作,请阅读Python文档中关于datetime、calendar和date的文档。

self参数是要访问的用户实例。

def save(self, *args, **kwargs):
    self.username  # This is username of the 
    self.slug  # This is user instance slug value
    super(User, self).save(*args, **kwargs)

相关问题 更多 >