gpt4 book ai didi

python - 字段变化时如何调用类模型中的函数?

转载 作者:行者123 更新时间:2023-12-04 09:42:52 26 4
gpt4 key购买 nike

在这个类中,当我添加帖子时,我想在类别字段更改时调用 category_change。

我怎样才能做到这一点?

class Post(models.Model):
title = models.CharField(max_length=100)
category = models.ForeignKey('Category', on_delete=models.CASCADE,null=True,blank=True,)
image = models.ImageField(default='default.jpg', null=True, blank=True,editable=False)
series = models.ForeignKey('Series', on_delete=models.CASCADE,null=True,blank=True,editable=False)
tags = models.ManyToManyField('FilmTags', related_name='post')
content = models.TextField()
watch = models.TextField(null=True, default='')
download_url = models.CharField(max_length=300, null=True, default="#")
created = models.DateTimeField(default=timezone.now)
updated = models.DateTimeField(auto_now=True)
publish = models.BooleanField(default=True)
views = models.IntegerField(default=0)

def category_change(self):
if category.title == "series":
self.image.editable = True
self.series.editable = True
self.image = self.series.image
else:
self.image.editable = True

最佳答案

Django signals是你需要的。信号会通知您实例更改,类似于数据库触发器。演示在这里:

信号.py:

from django.db.models.signals import post_save
from django.dispatch import receiver

from .model import Post


@receiver(post_save, sender=Post)
def is_category_changed(sender, instance=None, created=False, **kwargs):
instance.category_change()

应用程序.py:
from django.apps import AppConfig


class PostConfig(AppConfig):
name = 'Post'
verbose_name = 'Post'

def ready(self):
import post.signals # post is your app name

关于python - 字段变化时如何调用类模型中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62253586/

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