0

次のコードで継承する Page モデルの選択肢を制限する方法を誰か教えてもらえますか?

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')
4

1 に答える 1

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)
于 2009-07-08T14:49:52.763 に答える