我有3张桌子
models.py 中的class Property(db.Model):
id = db.Column(db.Integer, primary_key=True)
agent_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
agent = db.relationship('User')
description = db.relationship('PropertyDescription',
collection_class=attribute_mapped_collection('language')
)
property_type_id = db.Column(db.Integer, db.ForeignKey('property_type.id'), nullable=False)
sale_details = db.relationship('SaleDetails')
property_type_id = db.Column(db.Integer, db.ForeignKey('property_type.id'),
nullable=False)
property_type = db.relationship('PropertyType')
sale_details_id = db.Column(db.Integer, db.ForeignKey('sale_details.id'))
sale_details = db.relationship('SaleDetails')
def save(self):
super(Property, self).save()
class PropertyDescription(db.Model):
id = db.Column(db.Integer, primary_key=True)
long_description = db.Column(db.Text, nullable=False)
language = db.Column(db.Enum('de', 'en'), nullable=False)
property_id = db.Column(db.Integer, db.ForeignKey('property.id'),
nullable=False)
class PropertyType(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.relationship(
'PropertyTypeTitle',
collection_class=attribute_mapped_collection('language')
)
class SaleDetails(db.Model):
id = db.Column(db.Integer, primary_key=True)
price = db.Column(db.Integer, nullable=False)
在views.py 在form.validate_on_submit()上,如何将值插入所有表? 我想将数据插入到SaleDetails,PropertyDescription表中并获取它们的ID。并插入那些 将值输入到Property表中,并将Property的id插入PropertyDescription表。
我首先在property_obj中保存了属性,即Property Object。然后
models.Property.save(property_obj)
sales_obj = models.SaleDetails(price=form.sale_details.data)
prop_desc_obj = models.PropertyDescription(long_description=form.property_description.data,
property_id=models.Property.id)
db.session.add_all(property_obj, sales_obj, prop_desc_obj)
db.session.commit()
但我觉得我错过了一些东西。使用此代码我得到的错误就像 '对象不像dict那样'
答案 0 :(得分:1)
property()
是一个内置的python函数。我建议不要遮蔽内置函数,因为它们可能会导致不稳定的行为。
另外,当models.Property.save(property_obj)
类的小写字母为Property
时,property
正在使用大写字母P访问property_obj.save()
sales_obj = models.SaleDetails(price=form.sale_details.data)
prop_desc_obj = models.PropertyDescription(long_description=form.property_description.data,
property_id=property_obj.id)
db.session.add_all(property_obj, sales_obj, prop_desc_obj)
db.session.commit()
。
cd zeppelin-web
mvn package -DskipTests