Ich bin auf Flask-SQLalchemy update a row's information folgen, um zu versuchen, ein Objekt in einem Endpunkt zu aktualisieren. Ich habe:TypeError: filter_by() nimmt genau 1 Argument (2 gegeben)
def dashboard_presave_callback(data, existing_id=None):
# if existing_id, overwrite...else, make new item
print(data)
url_to = data.get('url_to', None)
print(url_to)
if isinstance(url_to, str):
pass
else:
url_to = json.dumps(url_to)
if existing_id:
data.update({'id': existing_id})
obj = DashboardItem.query.filter_by(id==existing_id).update(data)
# obj.update(data)
else:
obj = DashboardItem(**data)
DB.session.add(obj)
DB.session.commit()
class GenericApiView(JsonApiView):
# @jwt_required()
def post(self, model_type):
request_json = request.get_json()
dashboard_presave_callback(request_json)
return Response({'message': 'ok'}, 200)
def put(self, model_type):
request_json = request.get_json()
existing_id = request_json['id']
del request_json['id']
dashboard_presave_callback(request_json, existing_id)
return Response({'message': 'ok'}, 200)
das Modell sieht aus wie
class DashboardItem(DB.Model):
__tablename__ = 'dashboard_item'
id = DB.Column(DB.Integer, primary_key=True)
user_email = DB.Column(DB.String(200), unique=True, nullable=False)
url_to = DB.Column(DB.Text)
display_text = DB.Column(DB.String(200), nullable=False)
# https://stackoverflow.com/questions/8098122/mongoengine-creation-time-attribute-in-document
def save(self, *args, **kwargs):
print('huh?')
print(args)
print(kwargs)
self.url_to = 'it worked'
return super(DashboardItem, self).save(*args, **kwargs)
ich es so mache, weil meine save
nicht funktioniert hat, aber auf diese Weise ist in Ordnung, weil ich das gleiche Verhalten auf update
will.
ich
obj = DashboardItem.query.filter_by(id==existing_id).update(data)
TypeError: filter_by() takes exactly 1 argument (2 given)
es scheint, wie ich die gleiche Sache im Beispiel machte. Warum funktioniert das nicht filter_by
? Danke
danke. die Kontrollfreaks lassen mich die Antwort für 10 Minuten nicht annehmen :) – codyc4321
@ codyc4321 [Warum kann ich keine Antwort in den ersten 15 Minuten nach dem Stellen der Frage annehmen?] (https://meta.stackoverflow.com/questions/250132/Warum-kann-ich-akzeptiere-eine-Antwort-in-der-ersten-15-Minuten-nach-Frage-die-Frage) –
haha .. keine Sorgen. Bitte schön. Vielleicht später, wenn Sie SO wieder besuchen, können Sie akzeptieren. – Vasif