python
  • django
  • 2016-07-29 7 views 0 likes 
    0

    ちょっと私はカレンダリウムに取り組んでいます。これは私が通常使うものとは別にレイアウトされていますので、ウィジェットをフォームに追加するのが少し面倒です。モデルによって生成されたフォームにウィジェットを追加する

    何も私はこれを追加しようとしました

    class EventMixin(object): 
    """Mixin to handle event-related functions.""" 
    model = Event 
    fields = '__all__' 
    } 
    

    以下のいずれかがpassed.whichであり、その引数を推測完全イムページ上のフォームがあるなぜ私はunderstnadいけないEventCreatViewではありません。

    class EventMixin(object): 
    """Mixin to handle event-related functions.""" 
    model = Event 
    fields = '__all__' 
    widgets = { 
        'start': model.DateTimeField(widget = AdminDateWidget)} 
    
    
        @method_decorator(permission_required('calendarium.add_event')) 
        def dispatch(self, request, *args, **kwargs): 
        return super(EventMixin, self).dispatch(request, *args, **kwargs) 
    
    
    class EventUpdateView(EventMixin, UpdateView): 
    """View to update information of an event.""" 
    pass 
    
    
    class EventCreateView(EventMixin, CreateView): 
    """View to create an event.""" 
    pass 
    

    私はそれをうんざりしていて、うまくいきませんでしたが、私が完全に間違っているかどうかはわかりません。

    ありがとうございましたJ

    +0

    詳細情報を提供する必要があります。このEventMixinは実際にどのようなものに混じっていますか?ちょうどあなたはそのウィジットを追加しましたか? –

    +0

    私はまったく知らない、それは私にとってはあなたには新しいものだ。私はウィジェットをEventMixinに追加して、動作するかどうか確認しました。 –

    答えて

    0

    ここには少なくとも2つの問題があります。

    まず、widgetsは、ビュー上ではなくフォーム上の属性です。すべての編集ビューと同様に、モデルを指定しない場合、UpdateViewはモデルに基づいて自動的にModelFormを作成します。カスタマイズする必要があるため、ModelFormを明示的に定義し、Metaクラスにwidgets属性を使用する必要があります。

    第2に、名前が示すように、widgetsはフィールドではなくフォームのウィジェットを設定します。あなたの場合、ちょうどwidgets = {'start': AdminDateWidget}が必要です。

    +0

    これはありがとうございました。 –

    関連する問題