2016-09-17 3 views
1

다음 코드는 MyDataObject에 대해 ModelAdmin을 작성합니다. MyDataObject을 추가 할 때 many_many 관계는 저장 후에 만 ​​볼 수 있기 때문에 편집 양식은 비어 있습니다. 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'); 
} 

있습니까?

개체를 만든 다음 관계가 저장되지 않은 경우 개체를 제거하는 방법이 없다면 어떻게해야합니까?

+0

속성 (db 필드)을 포함하지 않는 dataobject의 목적은 무엇입니까? 잘못된 데이터 아키텍처가있는 것 같습니다. –

+0

@ GregSmirnov 거기에는 serval 목적이 있습니다. 지금 당장은 ... 여기 있습니다 ... 저는 has_many 필터 패키지를 가지고 있습니다 ... 각 필터는 목적과 데이터를 가지고 있습니다 ... 그래서 모든 항목의 데이터를 필터링합니다. 특정 제품을 필터링 할 수 있습니다 ... 그래서 데이터 객체/필터는 코드에 로직을 포함하고 제품 목록 만 필요합니다 ... 위의 예와 같이 많은 제품 목록 ... 도움이 답변을 제공합니까? – Barry

답변

1

제대로 이해하면 패키지에 많은 필터가 있고 하나의 필터에는 다른 패키지를 사용할 수 있습니다. 그런 다음 패키지와 필터 사이에 많은 관계가 있습니다. 제품 목록은 동적이며 매번 계산할 수 있습니다.

사용자는 패키지를 어떻게 든 참조해야하므로 Name 속성이 있어야하며 새 패키지를 추가하기위한 입력 상자가 하나 이상 있어야합니다 (지금까지와 같은 빈 화면이 아님).

업데이트

당신이 기술 한 동작은 정확하고 기대했던대로 ManyManyList 상태는 데이터베이스와 동기화됩니다, 그래서 당신은 상자 밖으로 DB의 목록을 저장하기로 결정 때까지 당신은 메모리에 저장된 항목을 가질 수 없습니다 .

Add New 버튼을 자신의 구현으로 대체하여 새 객체를 자동으로 만들고 DB에 저장 한 다음 편집 화면으로 리디렉션 할 수 있습니다.

+0

배리, 문제를 이해할 수 있도록 도와주세요. –