我正在尝试为现有模型创建一个编辑页面(已保存到db).表单对象期望multidict实例填充其字段.这就是我所拥有的:
# the model - assumes Flask-SQLAlchemy
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy(app)
class Person(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True)
def __init__(self, name=name):
self.name = name
# the form - assumes Flask-WTF ext.
from flask.ext.wtf import Form, TextField, Required, BooleanField
class PersonForm(Form):
name = TextField('name')
## the view
@app.route('/person/edit/<id>/', methods=['GET', 'POST'])
def edit_person(id):
person = Person.query.get(id)
if person:
form = PersonForm(person) #<-- raises error
return render_template('edit_person.html', form=form)
Run Code Online (Sandbox Code Playgroud)
我可以将表单中的每个字段分配给模型的每个字段(form.data['name'] = person.name, etc...),但对于大型模型来说这似乎是多余的.我有什么捷径可走吗?
背景
我有一个Python应用程序,它依赖于另一个作为git子模块提供的包,产生类似于以下内容的目录结构:
foo/
bar/
bar/
__init__.py
eggs.py
test/
setup.py
foo/
__init__.py
ham.py
main.py
Run Code Online (Sandbox Code Playgroud)
从顶层目录执行该访问foo包就足够简单了。但是该程序包嵌套在另一个目录中,不能直接导入。main.pyfoo/barbar
通过sys.path在以下内容的开头进行修改,可以轻松解决此问题main.py:
import sys
# Or sys.path.append()
sys.path.insert(0, './bar')
from bar.eggs import Eggs
from foo.ham import Ham
Run Code Online (Sandbox Code Playgroud)
(注意:此代码示例假定main.py将始终从中调用foo/;如果情况并非如此,则'.bar'可以将其替换,os.path.join(os.path.dirname(__file__), 'bar')尽管这样做显然比较麻烦。)
问题
不幸的是,pylint不喜欢这种解决方案。当代码工作时,lint认为sys.path修改是结束于“模块顶部”的代码块,并给出了不希望的wrong-import-position警告:
C: 6, 0: Import "from bar.eggs import Eggs" should be placed at the top of the module (wrong-import-position)
C: 7, 0: Import "from foo.ham …Run Code Online (Sandbox Code Playgroud) 我正在使用Python,我想找到2个数字之间的整数之和:
number1 = 2
number2 = 6
ans = (?)
print ans
#the numbers in between are 3,4,5
Run Code Online (Sandbox Code Playgroud)
请给我数学公式或Python代码来做到这一点.