3

我正在尝试在我的电子商务项目中切换到 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)

谢谢!

4

0 回答 0