2009-07-07 20 views
0

次のコードで継承したページモデルの選択肢をどのように制限することができますか?すなわち、Djangoモデルの継承とlimit_choices_to

class CaseStudy(Page): 
    """ 
    An entry in a fancy picture flow widget for a case study page 
    """ 
    image = models.ForeignKey(Image, limit_choices_to={'is_active': True, 'category__code':'RP'}) 

    def __unicode__(self): 
     return u"%s" % self.title 

は、Djangoの管理者はダウンに成功し、ドロップで画像の選択を制限しているが、私は同様に(「親ページフィールド」)ページのモデルにフィールドを制限したいと思います:

class Page(models.Model): 
    parent    = models.ForeignKey('self', blank=True, null=True, related_name='children') 

答えて

0

私はこれを管理するために、管理モデルフォームを無効にしました。私はこれを締め付けることができると思っていますが、そこに誰かに使用されるかもしれないと考えました。以下はadmin.pyの抜粋です

class CaseStudyForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(CaseStudyForm, self).__init__(*args, **kwargs) 

     recent_project_page = Page.objects.get(title="Recent Projects")   
     parent_widget = self.fields['parent'].widget 
     choices = [] 
     for key, value in parent_widget.choices: 
      if key in [recent_project_page.id,]: 
       choices.append((key, value)) 
     parent_widget.choices = choices 


class CaseStudyAdmin(admin.ModelAdmin): 
    form = CaseStudyForm 

admin.site.register(CaseStudy, CaseStudyAdmin) 
関連する問題