Tworzę niestandardowy system komentowania, który może załączać komentarze do dowolnego modelu przy użyciu typów zawartości GenericForeignKey.Dlaczego moja kaskada GenericForeignKey nie jest usuwana?
class Comment(models.Model):
body = models.TextField(verbose_name='Comment')
user = models.ForeignKey(User)
parent = models.ForeignKey('self', null=True, blank=True)
created = models.DateTimeField(auto_now_add=True)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
Rozumiem, że gdy model, do którego dołączony jest komentarz, zostanie usunięty, należy usunąć i skasować komentarz.
Niestety tak się nie dzieje i jestem zdumiony. Czy są jakieś typowe powody, dla których zmieniłoby się domyślne zachowanie usuwania?
Dzięki, źle odczytałem ten fragment dokumentacji i założyłem, że to domyślnie będzie kaskadowo. – Soviut
Bardzo dziękuję, gdzie były moje oczy ... – valex
Myślę, że dokumentacja Django powinna określać to na odwrót. "GenericForeignKey NIE kasuje usuwania, zamiast tego ustawia wartość na null, ale tylko kaskadowo, jeśli GenericRelation jest używane w pokrewnym modelu.". Jest to potrzebne, ponieważ domyślnie otrzymujemy kaskadowe usuwanie w normalnych kluczach obcych. –