私はdjango-polymorphic
モデルを持っており、post_save
シグナルを実装して、多型である関連モデルを自動的に作成したいと考えています。django-polymorphicでpost_saveレシーバを使用するには?
これは、以下のコードのようなものです。@receiver
の修飾コードwork_post_save
があります。問題はインスタンスがオブジェクトではなくctype_idであることです。
from django.db import models
from django.db.models import signals
from django.dispatch import receiver
from polymorphic.models import PolymorphicModel
from mygallery.models import Album
# Work Parent PolymorphicModel
class Work(PolymorphicModel):
title = models.CharField(blank=True,max_length=256)
slug = models.SlugField(max_length=256)
@receiver(signals.post_save, sender=Work)
def work_post_save(sender, instance, signal, created, **kwargs):
album, new = Album.objects.get_or_create(title=instance.title + ' Stills', slug=instance.slug + '-stills')
work_album, new = WorkAlbum.objects.get_or_create(work=instance, album=album, is_key=True)
class ArtProject(Work):
manifesto = models.CharField(blank=True,max_length=256)
class CodeProject(Work):
code = models.CharField(blank=True,max_length=256)
# Content Parent PolymorphicModel
class WorkContent(PolymorphicModel):
is_key = models.BooleanField(default=False, unique=True, default=False)
class WorkAlbum(WorkContent):
work = models.ForeignKey(Work, related_name='work_albums')
album = models.ForeignKey(Album, related_name='album_works')