gpt4 book ai didi

python - 用 pre_save() 填充 django 字段?

转载 作者:IT老高 更新时间:2023-10-28 20:34:55 24 4
gpt4 key购买 nike

class TodoList(models.Model):
title = models.CharField(maxlength=100)
slug = models.SlugField(maxlength=100)
def save(self):
self.slug = title
super(TodoList, self).save()

我假设上面是标题插入表TodoList时如何创建和存储slug,如果不是,请纠正我!

无论如何,我一直在研究 pre_save() 作为另一种执行此操作的方法,但无法弄清楚它是如何工作的。 pre_save() 是怎么做到的?

是不是像下面的代码片段?

def pre_save(self):
self.slug = title

我猜不是。执行此操作的代码是什么?

谢谢!

最佳答案

您很可能指的是 django's pre_save signal .你可以这样设置:

from django.db.models.signals import pre_save
from django.dispatch import receiver
from django.template.defaultfilters import slugify

@receiver(pre_save)
def my_callback(sender, instance, *args, **kwargs):
instance.slug = slugify(instance.title)

如果你没有在装饰器中包含 sender 参数,比如 @receiver(pre_save, sender=MyModel),那么所有模型都会调用回调。

您可以将代码放在应用程序执行期间解析的任何文件中,models.py 是一个很好的地方。

关于python - 用 pre_save() 填充 django 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6461989/

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