gpt4 book ai didi

python - Django 外键新模型实例用作默认值

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:14 24 4
gpt4 key购买 nike

我想知道是否可以执行以下操作

class ModelA(models.Model):
my_field = models.ForeignKey('UniqueKey', to_field='key' default=UniqueKey.create(key=KeyGen()))
# KeyGen() returns a new random key

本质上,我有许多模型都有一个唯一的 32 位 key 作为其字段之一。我创建了 UniqueKey 模型来管理所有这些 key 并确保不会出现重复项。我想做的是创建一个新的 UniqueKey 实例,并在创建新的 ModelA 实例时将其保存到数据库中。

这是可能的还是我只是以错误的方式处理这个问题?

最佳答案

我认为最好的方法是在创建模型实例时使用 post_save 信号。 https://docs.djangoproject.com/en/1.9/ref/signals/#post-save

class ModelA(models.Model):
my_field = models.ForeignKey('UniqueKey', to_field='key')

def set_default_uniquekey_for_modela(sender, instance, created, raw, using, update_fields):
if created is True:
new_unique_key = UniqueKey(key=KeyGen())
new_unique_key.save()
instance.my_field = new_unique_key
instance.save()

post_save.connect(set_default_uniquekey_for_modela, sender=ModelA)

因此,当创建 ModelA 的实例时,它将执行 set_default_uniquekey_for_modela(...) 来创建一个新的 UniqueKey 实例并将其分配给该实例。

关于python - Django 外键新模型实例用作默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37823717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com