Пустой экран, когда DataObject имеет только много-много связей

Следующий код делает ModelAdmin за MyDataObject, При добавлении MyDataObject форма редактирования пуста, потому что many_many отношения можно увидеть только после сохранения.

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 отношения существуют сразу?

Если нет, то есть ли способ создать объект, а затем удалить его, если отношения не сохранены?

1

Решение

Если я правильно понял, ваш Пакет может иметь много фильтров, и один Фильтр может использоваться другим Пакетом. Тогда у вас есть много-много отношений между Package и Filter. Список продуктов является динамическим, вы можете рассчитать его каждый раз.

Ваши пользователи должны как-то ссылаться на Пакет, поэтому у него должно быть свойство Name, и у вас есть хотя бы одно поле ввода для добавления нового Пакета (а не пустой экран, как у вас сейчас).

Обновить

Описанное вами поведение является правильным и ожидаемым. ManyManyList Состояние синхронизируется с базой данных, поэтому вы не можете хранить элементы только в памяти, пока не решите сохранить список в БД из коробки.

Вы могли бы заменить Add New Кнопка с вашей собственной реализацией для автоматического создания нового объекта, сохранения его в БД и перенаправления на экран редактирования.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]