

def test_ajax_fk_multi():
    (app, db, admin) = setup()

    class Model1(db.Model):
        __tablename__ = 'model1'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(20))

        def __str__(self):
            return self.name
    table = db.Table('m2m', db.Model.metadata, db.Column('model1_id', db.Integer, db.ForeignKey('model1.id')), db.Column('model2_id', db.Integer, db.ForeignKey('model2.id')))

    class Model2(db.Model):
        __tablename__ = 'model2'
        id = db.Column(db.Integer, primary_key=True)
        name = db.Column(db.String(20))
        model1_id = db.Column(db.Integer(), db.ForeignKey(Model1.id))
        model1 = db.relationship(Model1, backref='models2', secondary=table)
    db.create_all()
    view = CustomModelView(Model2, db.session, url='view', form_ajax_refs={
        'model1': {
            'fields': ['name'],
        },
    })
    admin.add_view(view)
    ok_(('model1' in view._form_ajax_refs))
    model = Model1(name='first')
    db.session.add_all([model, Model1(name='foo')])
    db.session.commit()
    form = view.create_form()
    eq_(form.model1.__class__.__name__, 'AjaxSelectMultipleField')
    with app.test_request_context('/admin/view/'):
        ok_(('data-json="[]"' in form.model1()))
        form.model1.data = [model]
        ok_(('data-json="[[1, &quot;first&quot;]]"' in form.model1()))
    client = db.test_client()
    client.post('/admin/view/new/', data={
        'model1': as_unicode(model.id),
    })
    mdl = db.session.query(Model2).first()
    ok_((mdl is not None))
    ok_((mdl.model1 is not None))
    eq_(len(mdl.model1), 1)

dataset/ETHPy150Open flask-admin/flask-admin/flask_admin/tests/sqla/test_basic.py test_ajax_fk_multi/VarMisuse@380/511 `app`->`db`