我正在尝试在我的电子商务项目中切换到 django 多态模型,但发现预保存信号存在问题。
通过管理员创建新产品时,我需要用唯一值填充对象的“Slug”字段。在非多态版本中,它是通过来自父“产品”模型的所有子类的预保存信号实现的:
for subclass in Product.__subclasses__():
print(subclass)
pre_save.connect(product_pre_save_receiver, sender=subclass)
现在模型层次结构看起来如下(简化):
class Product(PolymorphicModel):
title = models.CharField(max_length=120)
class Camera(Product):
serial_number = models.TextField(max_length=20, blank=True, null=True)
接收者:
def product_pre_save_receiver(sender, instance, *args, **kwargs):
if not instance.slug:
instance.slug = unique_slug_generator(instance)
创建多态子模型实例时的发送者类是什么?还是在 django-polymorphic 中触发了任何 pre_save 信号?
即使在没有定义发送者类的情况下使用 pre_save.connect 时,我也没有收到任何信号。
pre_save.connect(product_pre_save_receiver)
谢谢!