2016-09-17 7 views
1

次のコードは、MyDataObjectに対してModelAdminを作成します。 MyDataObjectを追加すると、many_manyの関係は保存後にしか見ることができないので、編集フォームは空です。DataObjectにManyManyリレーションシップのみがある場合の空白の画面

class TestAdmin extends ModelAdmin { 
    static $managed_models = array('MyDataObject'); 
    static $url_segment = 'testadmin'; 
    static $menu_title = 'TestAdmin'; 
} 

class MyDataObject extends DataObject { 
    private static $many_many= array('MyOtherDataObjects' => 'MyOtherDataObject'); 
} 

class MyOtherDataObject extends DataObject { 
    private static $db = array('Name' => 'Varchar(255)'); 
    private static $belongs_many_many = array('MyDataObjects' => 'MyDataObject'); 
} 

many_manyの関係がすぐに存在する方法はありますか?

オブジェクトを作成し、関係が保存されていない場合は削除する方法はありますか?

+0

プロパティ(dbフィールド)を含まないdataオブジェクトの目的は何ですか?間違ったデータ構造があるようです。 –

+0

@GregSmirnovそこには私が今持っているservalの目的があります...ここには1つ...私はhas_manyフィルタを持つパッケージを持っています...それぞれのフィルタは目的といくつかのデータを持っています。特定の製品をフィルタリングすることができます。そのため、データオブジェクト/フィルタにはロジックが含まれており、製品のリストのみが必要です。多数の製品リスト...上記の例と同じです。それは答えを提供するのに役立ちますか? – Barry

答えて

1

私が正しく理解していれば、あなたのパッケージは多くのフィルターを持ち、1つのフィルターは異なるパッケージで使用できます。次に、パッケージとフィルタの間には多くの関係があります。製品のリストは動的で、毎回計算することができます。

ユーザーが何らかの形でパッケージを参照する必要がありますので、プロパティ名を持つ必要があり、あなたは(あなたが今持っているようではない空白の画面)新しいパッケージを追加するために、少なくとも1つの入力ボックスを持っています。

更新

あなたが説明した行動が正しいとexpected.The ManyManyList状態はデータベースと同期しているので、あなたは、箱から出しDB内のリストを保存することを決定するまで、あなただけのメモリに格納されているアイテムを持つことはできません。

あなたは、自動的に新しいオブジェクトを作成するために、独自の実装でAdd Newボタンを代わりにDBに保存し、画面を編集するリダイレクトできます。

+0

バリー、あなたの問題を理解するのを手伝ってください。 –

関連する問題