Wpis z mikrobloga

Mirunie bo już wysiadam a to musi być proste -- wołam #python

Do apki we Flasku stworzyłem customowy validator. Chciałbym, aby sprawdzał, czy input użytkownika jest w bazie danych.
Kombinowałem z : (Product = nazwa modelu bazy)

def find
name(erase, field):
data = db.session.query(Product).all()
if field.data not in data:
raise ValidationError("There isn't any item with this name")

Jednak wali błędem nawet jak podany field.data fizycznie tam jest.
Ewidentnie coś jest z sql query, bo zwykłe założenia mi przechodzą. Kombinowałem z iterowaniem tego przez data ale wciąż nic. Jakieś pomysły?
  • 11
@michael93pl: ja w django robilem to tak:

def checksetifexist(legocode):
try:
set = Blockslist.objects.get(legocode=legocode)
print('Set: %s, exist.' % (set.legocode))
val = True
except Blockslist.DoesNotExist:
print('Set: %s doesnt exist. Can be created.' % (lego
code))
val = False
return val

tu dla czytelnosci, linijka 166: https://github.com/brtj/blocksite/blob/master/blocks/views.py

czy to jest zgodne ze sztuka nie wiem bo amator/samouk ze mnie. Ale dziala ( ͡° ͜ʖ ͡
@pshemeq: data to po prostu zmienna trzymająca query,
Product to :
class Product(db.Model):
_tablename = 'product'
id = db.Column(db.Integer, primary
key=True)
name = db.Column(db.String(30), nullable=False)
quantity = db.Column(db.Integer, nullable=False)
producttype = db.Column(db.String(30), nullable=False)
category
id = db.Column(db.Integer, db.ForeignKey('category.id'))
description = db.Column(db.String(255))

field.data to jakiś Flaskowy sposób na dostanie się do danych z inputu, jest tylko jeden i ta część na pewno działa (testowałem z jakąś pierdołą jak if field.name
@michael93pl: Nie wiem jak jest z modelami we Flasku, ale raczej jeśli masz obiekt field.data, który w najlepszym przypadku jest stringiem, a jeśli nie to jakimś bardziej złożonym obiektem, to o ile we Flasku nie jest przeciążone porównanie obiektu inputa z wynikiem selecta to raczejTwój kod nigdy nie zadziała. Nie możesz zrobić selecta, który będzie pytał się czy w bazie jest dany obiekt, zamiast pobierać wszystkie i sprawdzać czy coś tam
@pshemeq: będzie nawet lepiej ale mam problem ze stworzeniem tego query właśnie. Dokładnie, problem mam ze stworzeniem tego query, dopiero rzeźbię we Flasku i poznaje sql alchemy i nie moge tego ogarnąć
@michael93pl: Będziesz musiał zanurkować w dokumentacji ;) Niestety nie robiłem nic we flasku. Może znajdzie się jakiś Mirek, który będzie mógł Ci bardziej pomóc. W debugowaniu możesz użyć pdb. Będzie Ci łatwiej.

import pdb;pdb.set_trace()
@pshemeq: dokumentacja moim przyjacielem, nigdy nie pytam bez nurkowania gdzie tylko mogę :D ale właśnie w jakiś sposób nie mogę tego znaleźć, na stacku też niewiele znalazłem, choć pewnie ogólnie źle szukam ;p Dzięki i tak Mireczku !