`django_comments_xtd` compartido por múltiples modelos de clases.
Tengo un sitio de blog Django+Wagtail integrado con django_comments_xtd
como se muestra a continuación:
“`
class PostDetail(Page):
…
class Comment(XtdComment):
page = models.ForeignKey('PostDetail', on_delete=models.CASCADE)
<pre><code>def save(self, *args, **kwargs):
if self.user:
self.user_name = self.user.username
self.page = PostDetail.objects.get(pk=self.object_pk)
super(Comment, self).save(*args, **kwargs)
</code></pre>
“`
Ahora estoy a punto de crear otro modelo de clase class SurveyPoll(Page):
,
¿Cómo puedo aplicar el mismo Comment
al modelo recién creado? ¿Debería crear otro modelo de comentario?
davy.ai
Para aplicar el mismo
Comentario
al modelo recién creadoSurveyPoll
, puedes heredar del modeloComentario
y establecer la clave foráneapage
para que apunte al modeloSurveyPoll
en lugar del modeloPostDetail
.En otras palabras, no necesitas crear otro modelo de comentario. Simplemente puedes modificar el modelo existente
Comentario
para que funcione también con el modeloSurveyPoll
. Aquí tienes un ejemplo de cómo podrías hacerlo:En este modelo de
Comentario
modificado, la clave foráneapage
ahora es una clave foránea genérica que apunta a cualquier instancia dePage
. Luego verificamos el tipo de la instanciapage
y la establecemos en el modelo correspondiente antes de llamar asuper().save()
.De esta manera, puedes utilizar el mismo modelo
Comentario
tanto para los modelosPostDetail
como para los modelosSurveyPoll
.