我知道这是非常高级的,并且代码并不能完全按照您的要求进行建模。但它们是来自
的简单示例
Django 发出信号以确定何时发生更改。
https://docs.djangoproject.com/en/dev/topics/signals/
这是我的应用程序中的一个 signals.py 文件,用于在用户更改时管理 Person 对象:
from django.db import models
from anotherapp.models import *
def user_post_delete(sender, instance, **kwargs):
try:
if instance.username:
person_item = Person.objects.get(username = instance.username)
person_item.django_user = None
person_item.save()
except:
pass
def user_post_save(sender, instance, **kwargs):
try:
if instance.username:
p, created = Person.objects.get_or_create(
username=instance.username)
p.django_user = instance
p.save()
except:
pass
models.signals.post_delete.connect(user_post_delete, sender=User)
models.signals.post_save.connect(user_post_save, sender=User)
Django ContentTypes 将您的条件与相关对象相关联。
https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/
这是我与 ContentTypes 一起使用的模型:
from django.contrib.contenttypes.models import ContentType
class Comment(models.Model):
message = models.TextField()
#removed fields not relevent
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
date_added = models.DateTimeField('date_added',auto_now_add=True, editable=False)
date_updated = models.DateTimeField('date_updated',auto_now_add=True, auto_now=True, editable=False)
然后在你的views.py/signals.py中使用那个ContentType模型(Ticket是模型名,t.id是Ticket对象的id:
new_comment = Comment(
message = "test message",
content_type = ContentType.objects.get(model='Ticket'),
object_id = t.id,
)
new_comment.save()
然后,您可能想要扩展一个简单的布尔值来判断您的条件是否满足,或者进一步了解它并使用另一个模型来存储结果并得出“5