0
Flask의보기에서 테이블에 데이터를 추가 할 때 오류가 발생합니다. 업데이트하려고하는 테이블에 다른 모델에 대한 ForeignKey 관계가 있습니다. 그러나 자식 모델을 업데이트하려고합니다.Flask error TypeError : 호환되지 않는 컬렉션 유형 : str이 목록과 유사하지 않습니다.
모델 : 다음은 간단한 경우가
상위 모델
class Student(db.Model):
__tablename__='student'
....
package = package = relationship('Package', backref=backref('student'))
....
def __init__(self, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)
아동 모델
class Package(db.Model):
__tablename__ = 'package'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
student_id = db.Column(db.Integer, ForeignKey('student.id'))
stripe_id = db.Column(db.String(45))
student_email = db.Column(db.String(20))
subscription_date = db.Column(db.DateTime, default=today)
expiry_date = db.Column(db.DateTime, default=deadline)
is_active = db.Column(db.Boolean, default=True)
planname = relationship('Plan', backref=backref('package'))
package_price = db.Column(db.Integer)
coupon = db.Column(db.String(12))
def __init__(self, **kwargs):
for key, value in kwargs.items():
setattr(self, key, value)
내보기 :
@app.route('/yearlychargedrec', methods=['GET', 'POST'])
def yearly_charged_rec():
if not user_authorized():
return redirect('/')
# customer
stripe_token = request.form['stripeToken']
email = request.form['stripeEmail']
customer = stripe.Customer.create(
email=email,
source=request.form['stripeToken']
)
try:
subscription = stripe.Subscription.create(
customer=customer.id,
plan="yearlyrec",
)
except stripe.error.CardError as e:
# The card has been declined
body = e.json_body
err = body['error']
if request.method == 'POST':
# email = email
package = Package(
is_active=True,
planname = 'yearlyrec',
)
db.session.add(package)
db.session.commit()
return render_template('/profile/charge/monthlycharge.html')
오류 :
TypeError: Incompatible collection type: str is not list-like
나는 이것을 시도 할 것이고 그것이 효과가 있다면 답을 틱 할 것이다. 위의 커밋을 위에 적어 주시면 알려 드리겠습니다 : 블록은 거기에 배치하는 것이 합리적일까요? 그럼 예외 모델이 있다면 저장되지 않을까요? –
계획 클래스에 관계 선을 추가하십시오. – metmirr
데이터베이스 문제가 아니지만 "AttributeError : 'str'개체에 '세션'속성이 없습니다."라는 메시지가 표시됩니다. 이 게시물과 관련된 문제가 해결되었으므로 다른 질문을하겠습니다. 도와 주셔서 감사합니다. –