Tôi đang cố tạo Trang mô hình, trang cũng sẽ có thể có "trang con".Mối quan hệ tự giới thiệu Django?
mã mô hình của tôi dưới đây giữ crashing Python trên máy Mac của tôi (python 2.6.1) và 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)
Tôi đang làm gì sai? Hay việc hiển thị HTML kiểu này thuộc về chế độ xem?
Cảm ơn.
Số lượng cuộc gọi 'PyEval_EvalFrameEx' trong theo dõi ngăn xếp có thể dẫn đến tràn ngăn xếp. Trông giống như một lỗi Python, vì thông thường Python sẽ phá vỡ đệ quy tại một số điểm với 'RuntimeError: độ sâu đệ quy tối đa đã vượt quá'. – AndiDog
Một nhận xét nhỏ về mô hình của bạn: quan hệ nhiều-nhiều có lẽ là biểu diễn sai. Trong một cây, một nút (hoặc trong mã của bạn, một trang) chỉ có số không hoặc một phụ huynh. Chìa khóa nước ngoài 'cha mẹ' sẽ là đại diện tốt hơn. –
@piquadrat Cảm ơn bạn đã chú ý. Tôi đổ lỗi cho buồn ngủ. – jussi