具有 uuid5 主键的 Django 模型

问题描述 投票:0回答:1

我在定义 Django 模型时遇到问题,其中主键是基于模型字段的 UUID5。

这是我已经得到的。

class Place(models.Model):
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid5('PLACE_UUID_NAMESPACE', '{}{}{}'.format(self.city, self.zip, self.country)))
    city = models.CharField(max_length=24, blank=True, null=True)
    zip = models.CharField(max_length=6, blank=True, null=True)
    country = CountryField(default='US')

问题在于像我一样引用模型字段

self.city, self.zip, self.country
。 Django 不接受我的做法。 如何使用模型字段定义 uuid5?

感谢您的帮助。

python django primary-key uuid
1个回答
0
投票

不要认为这是可能的,因为您无权从可调用的默认参数访问实例。

您最好的机会是设置随机默认 uuid 并使用预保存信号用您想要的内容覆盖它。

© www.soinside.com 2019 - 2024. All rights reserved.