Estoy intentando crear una página modelo, la página también debería poder tener "páginas secundarias".¿Relación autorreferencial de Django?
Mi código siguiente modelo mantiene crashing Python en mi Mac (Python 2.6.1) y Ubuntu 10.04 (Python 2.6.5):
from django.db import models
from django.contrib import admin
class Page(models.Model):
slug = models.SlugField(blank=True)
title = models.CharField(max_length=100)
content = models.TextField(blank=True)
children = models.ManyToManyField("self", blank=True)
published = models.BooleanField(default=True)
created = models.DateTimeField(blank=True, auto_now_add=True)
def html(self):
html = "<li>"
html += self.title
children = self.children.all()
if len(children) > 0:
for page in children:
html += page.html()
html += "</li>"
return html
def __unicode__(self):
return self.title
class PageAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('title',)}
admin.site.register(Page, PageAdmin)
¿Qué estoy haciendo mal? ¿O este tipo de procesamiento de HTML pertenece a las vistas?
Gracias.
El número de llamadas 'PyEval_EvalFrameEx' en el seguimiento de la pila podría haber llevado a un desbordamiento de la pila. Se parece mucho a un error de Python, porque normalmente Python rompería la recursión en algún momento con 'RuntimeError: se excedió la profundidad de recursión máxima'. – AndiDog
Un pequeño comentario sobre su modelo: una relación de muchos a muchos probablemente sea la representación incorrecta. En un árbol, un nodo (o en su código, una página) solo tiene cero o uno principal. Una clave extranjera 'padre' sería la mejor representación. –
@piquadrat Gracias por notarlo. Yo culpo a la somnolencia. – jussi