2017-01-29 7 views
7

私の管理Webサイトからフロントエンドにいくつかの機能を移行することに決めました。機能には、一部の外部キーインラインを使用した1つのモデルの管理が含まれます。フロントエンドでインラインでDjango管理機能を有効にする

私はdjango-dynamic-formset JQueryプラグイン(リンクgit)をインストールしており、すでに数日間苦労しています。ここにはproblemsの1つがあります。

同じ機能が既にDjango管理者に実装されています。私は必要に応じて、追加、変更、インライン削除、モデルインスタンスの変更ができます。 このJQueryプラグインを使用する理由と、インターネット上のトピックに関するチュートリアルがあまり多くないのはなぜですか?

サードパーティ製のJSファイルなしで、フロントエンド側でdjangoの書式セットまたはインラインの書式セットを使用する方法の良い最近の例が必要です。インラインアイテムを削除し、新しいインラインを正しく追加するボタンを追加するためのリンク(チェックボックスではない)があればうれしいです。

class School(models.Model): 
    name = models.CharField(_('School name'), max_length=100) 

class SchoolPlace(models.Model): 

    school = models.ForeignKey(School, verbose_name=_('school place'), related_name='school_places', blank=True, null=True) 

    name = models.CharField(_('School place name'), max_length=200) 

    city = models.ForeignKey(City, blank=True, null=True, verbose_name=_('city'), 
        help_text='city') 

も対応している形式:

class SchoolForm(forms.ModelForm): 

     name = forms.CharField(
          label=_('Name'), 
          widget=forms.TextInput(attrs={ 
           'placeholder': _('school name')}), 
           max_length=100, required=True) 

class SchoolPlaceForm(forms.ModelForm): 

    name = forms.CharField(label=_('Name'), 
          widget=forms.TextInput(
             attrs={'placeholder': _('school place name')}), 
             max_length=200, 
             required=False) 

    city = forms.ModelChoiceField(label=_('City'), 
            widget=forms.Select(attrs={'class': 'ui search dropdown'}), 
            queryset=City.objects.all(), required=False) 

    class Meta: 
     model = SchoolPlace 
     fields = ['name','city'] 
     exclude = ['school'] 

は、私は2校のモデル校とSchoolPlaceを持っている:質問が広すぎると考えられていたので、

は、具体的には私はDjangoの管理者と同じ方法でこれらの2つのモデルを編集したいと思いますが、自分のフロントエンドでのみ行います。すべてのjsファイルが既にdjango.contrib.adminにある限り、私はサイドアプリケーションとプラグインを使用せずにそれをやりたいと思います。

Djangoの管理者と同じ機能が必要です:SchoolPlaceのインラインの追加、削除、変更。 enter image description here

答えて

1

adminフォーム(ビュー内)または管理ビュー(カスタムURL上)を使用し、管理用テンプレートを変更すること、あるいは管理用javascriptをロードすることだけをお勧めします。それをadminテンプレートに追加します。

+0

実例を提供できますか? –

1

このタスクでは、フロントエンドとバックエンドの両方のサポートが必要です。

django-adminフォームがフロントエンドで使用できるのは、これが受け入れられる場合が最も簡単なようです。

任意のdjango管理フォームは、URLの?_popup=1パラメータを認識して、管理ページの装飾を抑制し、フォームのみを提供します。必要なJavaScriptとCSSスタイルがすべて含まれます。そのため、管理フォームはiframeのフロントエンドに表示されます。 JavaScriptレベルでの小さなハッキングは、フォームにiframeのサイズを調整してページに通知してからフォームが閉じられるように依然として必要です。

+0

ありがとうございます!私はそれがiframeの内側に埋め込むにはあまりにもオーバーヘッドになると思う。私は自分のテンプレートとレンダリングされたフォームで静的に配置されているadmin jsファイルの使用について考えています。 –

関連する問題