2014-12-30 3 views
-1

서브 페이지로 페이지를 설정하는 선택자를 만들려고합니다. 지금 가지고있는 코드는 작동하지 않습니다. 페이지가 서브 페이지로 설정된 경우 부모의 ID를 저장하려고합니다. 내 방식이 의미가 없지만 다른 해결책을 모른다고 생각합니다. 오류는 "No pages named pages"입니다. 도움을 주셔서 감사합니다 : Ddjango에서 서브 페이지를 설정하는 방법 선택 사항에서 쿼리를 사용하는 방법

import datetime 
from django.db import models 
from django.utils import timezone 
from ckeditor.fields import RichTextField 
from django.template.defaultfilters import slugify 
from autoslug import AutoSlugField 
from models.pages import Page 

class Page(models.Model): 
    all_objects = Page.objects.all() 
    parent_page = [(0, 'Main page')] 
    parent_page = parent_page.extend([(x.id, x.page_title) for x in all_objects]) 

    page_title = models.CharField(max_length=200) 
    admin_title = models.CharField(max_length=200, blank = True) 
    sub_page = models.IntegerField(default = 0, choises = parent_page) 
    content = RichTextField(blank = True) 
    slug = AutoSlugField(blank = True, populate_from='page_title', unique=True, editable=True) 
    pub_date = models.DateTimeField('date published') 
    view_status = models.IntegerField(default=1, choices=[(1, 'Active'), (2, 'Active, not displayed in menu'), (3, 'Inactive')]) 

    def __str__(self): 
     return self.page_title 
+0

가하셨습니까 ** pages.models에서 당신의 수입에 페이지 **를 가져? – avenet

답변

0

난 당신이 이런 식으로 원하는 것을 구현하는 것 :

import datetime 

from django.db import models 
from django.template.defaultfilters import slugify 
from django.utils import timezone 

from autoslug import AutoSlugField 
from ckeditor.fields import RichTextField 

VIEW_STATUS_CHOICES = [ 
    (1, 'Active'), 
    (2, 'Active, not displayed in menu'), 
    (3, 'Inactive') 
] 

class Page(models.Model): 
    parent_page = models.ForeignKey('self') 
    page_title = models.CharField(max_length=200) 
    admin_title = models.CharField(max_length=200, blank = True) 
    sub_page = models.IntegerField(default = 0, choices = parent_page) 
    content = RichTextField(blank = True) 
    slug = AutoSlugField(blank = True, populate_from='page_title', 
         unique=True, editable=True) 
    pub_date = models.DateTimeField('date published') 
    view_status = models.IntegerField(default=1, choices=VIEW_STATUS_CHOICES) 

    #Some helper methods 
    def get_children(self): 
     return Page.objects.filter(parent_page=self) 

    def has_children(self): 
     return get_children.count() > 0 

    def __str__(self): 
     return self.page_title