Django 如何创建与继承的泛型关系?
我有这样的结构:一个活动可以包含多个动作。每一个行动都应该与一场运动有关。有不同类型的操作,如电子邮件、Web挂钩等。。这些操作的共同点是“运行”方法。当我运行活动的run方法时,与活动相关的操作也应该运行 我想这样的事情对我会有用的:Django 如何创建与继承的泛型关系?,django,django-models,Django,Django Models,我有这样的结构:一个活动可以包含多个动作。每一个行动都应该与一场运动有关。有不同类型的操作,如电子邮件、Web挂钩等。。这些操作的共同点是“运行”方法。当我运行活动的run方法时,与活动相关的操作也应该运行 我想这样的事情对我会有用的: class Campaign(models.Model): name = models.CharField(max_length=32) description = models.CharField(max_length=255) is_
class Campaign(models.Model):
name = models.CharField(max_length=32)
description = models.CharField(max_length=255)
is_active = models.BooleanField(default=False)
def run(self, data):
for action in self.actions.all():
action.run(data)
class Action(models.Model):
name = models.CharField(max_length=32)
campaign = models.ForeignKey(
Campaign,
on_delete=models.CASCADE,
related_name='actions',
)
class Meta:
abstract = True
def run(self, data):
print(f'The {self.name} action ran.')
print(f'Data: {data}')
class EmailAction(Action):
subject = models.CharField(max_length=128)
body = models.TextField()
class Meta:
db_table = 'email_action'
def run(self, data):
super(EmailAction, self).run(data)
class WebhookAction(Action):
url = models.CharField(max_length=256)
body = models.TextField()
class Meta:
db_table = 'webhook_action'
def run(self, data):
super(WebhookAction, self).run(data)
实现此工作流的最佳方式是什么
场景:
我将创建一个活动。例如,添加到购物车通知(活动名称)。
然后,我将创建一个EmailAction,并会说“您已将产品添加到购物车”。
如果有一天我需要将此事件推送到外部服务,我将创建一个web钩子操作。
也许我可以再发一封电子邮件:“这是您可能感兴趣的产品”是否
活动
仅存储ID?没有其他信息吗?你能更详细地解释一下你的问题是什么吗?除了在您的活动模型中应该是“for action in self.actions.all()”之外,您的代码应该work@funnydman是的,有更多的字段,但我没有写它们,因为它们与问题无关。@Chris我的问题是:这种方法是实现这个场景的正确方法吗?还纠正了您指出的错误,谢谢。实际上它们是相关的,这将为构建更精确的数据库结构提供更多信息。