当数据对象只有many - many关系时出现黑屏


Blank Screen When DataObject Only Has ManyMany Relationship

下面的代码为MyDataObject生成一个ModelAdmin。当添加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关系立即存在?

如果没有,是否有一种方法可以创建对象,然后在没有保存关系的情况下删除它?

如果我理解正确的话,你的包可以有很多过滤器,一个过滤器可以被不同的包使用。那么包和过滤器之间就有了多对多的关系。产品列表是动态的,你可以每次计算一次。

您的用户应该以某种方式引用Package,因此它应该有一个属性Name,并且您至少有一个用于添加新Package的输入框(而不是现在的空白屏幕)。

更新

你所描述的行为是正确的和预期的。ManyManyList状态是与数据库同步的,所以你不能让项目只存储在内存中,直到你决定将列表存储在DB中。

您可以用自己的实现代替Add New按钮来自动创建新对象,将其保存在DB中并重定向到编辑屏幕。