簡體   English   中英

類型錯誤:'estates' 是 Estate 的無效關鍵字參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM