3

e コマース プロジェクトで 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