gpt4 book ai didi

django - 使用模型中的函数动态填充 Django 中对象创建时的字段

转载 作者:行者123 更新时间:2023-12-02 08:58:53 24 4
gpt4 key购买 nike

在 Django 中,可以在对象创建时调用模型本地函数来动态填充字段吗?

class someModel(models.Model):
id = models.FloatField(primary_key=True, default=generate_id())

def generate_id(self):
newId=time.time()
return newId

到目前为止,我还没有成功让它工作或找到涵盖它的文档。

最佳答案

from django.db import models
import time

class SomeModel(models.Model):
id = models.FloatField(primary_key=True)

def save(self, *args, **kwargs):
if not self.id:
self.id = self.generete_id()
super(SomeModel, self).save(*args, **kwargs)

def generate_id(self):
return time.time()

还要注意的是,Django 内部可能有一些代码依赖于未保存的模型实例没有主键这一事实(至少在 v1.0 中是这样)。

另一个陷阱是通过调用 time.time() 生成 id。很可能在重负载下你会得到重复的 id。我建议使用uuid module生成唯一标识符。

关于django - 使用模型中的函数动态填充 Django 中对象创建时的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2755707/

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