[英]TypeError: 'estates' is an invalid keyword argument for Estate
遇到了一個新問題,我更改了每個變量。 遇到了關系問題,並將它們插入到數據庫中。 我對在upload_estate函數的routes.py上放什么有點困惑這里有一些新的變化
模型.py
class Estate(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(50), nullable=False)
quarter = db.Column(db.String(50), nullable=False)
street = db.Column(db.String(50), nullable=False)
price = db.Column(db.String(50), nullable=False)
bedroom = db.Column(db.String(50), nullable=False)
bathroom = db.Column(db.String(50), nullable=False)
kitchen = db.Column(db.String(50), nullable=False)
livingroom = db.Column(db.String(50), nullable=False)
type_id = db.Column(db.Integer, db.ForeignKey('type.id'))
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
estat_type = db.relationship('Type', backref=db.backref('estates', lazy=True))
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
description = db.Column(db.Text, nullable=False)
image_file_one = db.Column(db.String(500), nullable=False)
image_file_two = db.Column(db.String(500), nullable=False)
image_file_three = db.Column(db.String(500), nullable=False)
image_file_four = db.Column(db.String(500), nullable=False)
image_file_five = db.Column(db.String(500), nullable=False)
def __repr__(self):
return '<Estate %r>' % self.quarter
class Type(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
def __repr__(self):
return '<Type %r>' % self.name
路線.py
@app.route('/admin/upload-estate', methods=['POST', 'GET'])
@login_required
def upload_estate():
form = UploadEstateForm()
form.type.choices = [(type.id, type.name) for type in Type.query.all()]
if request.method == 'POST':
image_file_one = files.save(request.files.get('image_file_one'), name=secrets.token_hex(10) + ".")
image_file_two = files.save(request.files.get('image_file_two'), name=secrets.token_hex(10) + ".")
image_file_three = files.save(request.files.get('image_file_three'), name=secrets.token_hex(10) + ".")
image_file_four = files.save(request.files.get('image_file_four'), name=secrets.token_hex(10) + ".")
estate = Estate(
title=form.title.data,
quarter=form.quarter.data,
street=form.street.data,
price=form.price.data,
bathroom=form.bathroom.data,
bedroom=form.bedroom.data,
livingroom=form.livingroom.data,
kitchen=form.kitchen.data,
estates=form.estate_type.data,
user_id=current_user.id,
description=form.description.data,
author=current_user.username,
image_file_one=image_file_one,
image_file_two=image_file_two,
image_file_three=image_file_three,
image_file_four=image_file_four
)
db.session.add(estate)
db.session.commit()
flash('Estate uploaded successfully!', 'success')
return redirect(url_for('dashboard'))
return render_template('upload_estate.html', title='Upload Estate', form=form)
提前致謝
好的,您的模型設置方式表明您想要一個具有多種類型的 Estate。 由於情況並非如此,我建議將 'estat_type' 列從Estates
模型移至Type
一。 您還需要對其進行如下修改:
estat_type = db.relationship('Estate', backref=db.backref('type', lazy=True))
這將允許您使用backref“類型”,如訪問遺產的類型Estate.type
。 您還可以使用Type.estat_type
訪問一種類型下的所有庄園。 (我建議將 'estat_type' 更改為 'estates',因為它現在包含一種類型的庄園列表。)
至於更新表(如果我理解正確的話),關系會自行處理,您不需要將數據從“類型”表插入到“資產”表中,因為類型信息應該可以通過backref, Estate.type
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.