Open V-I-S opened 10 years ago
Moja propozycja jest następująca: napisać to w nawet i w 100 linijkach - ale czytelnie krok po kroku. Bo mówiąc szczerze to ja nawet nie wiem za bardzo co ma się dziać w tej funkcji.
Pierwsza rzecz to znalezienie składników - napisałam co jest tam nie tak. Druga to jak rozumiem znalezienie przepisów, w których jest pojawiają się te składniki - proponuje zrobić nawet i normalną pętlę i apendować listę wynikami.
recipes += Recipe.query\
.join(IngredientAssociation, Recipe.id == IngredientAssociation.columns.recipe_id)\
.join(IngredientUnit, IngredientUnit.id == IngredientAssociation.columns.ingredient_unit_id)\
.join(Ingredient, IngredientUnit.ingredient_id == Ingredient.columns.id)\
.filter(Ingredient.id == ity_skladnik_z_listy)\
.all()
Spoko, rozpiszę i rano wrzucę. Masz rację, to może być tylko pierwszy element, to by wiele mówiło...
Kurdę, może nie tak "rano", bo muszę wyskoczyć na PWr i nie zdążyłem, ale niedługo będzie.
Ejj..Mam prośbę, Próbuję wykonać taką linię kodu:
Ingredient.query.get(1)
Mi po utworzeniu bazy niestety wyskakuje None dla każdego id 1,2,3... Dla:
Ingredient.query.all()
zwraca pustą listę...
Bazę wygenerowałem ze skryptów, nazwa jest domyślna 'test.db', przeniosłem ją do katalogu w którym jest plik 'runserver.py'. Co jeszcze może być nie tak?
Ścieżka to bazy to domyślnie <miejsce wywołania>/test.db
. Jak masz problem z tym to możesz ręcznie ścieżkę ustawić tutaj. Tylko nie commituj tej zmiany.
Dotyczy #21
Ok, generalnie już wszystko ogarnięte, oprócz synchronizacji z webapp, a nie chcę wrzucać bez tego. Jak możecie rozwiać moją wątpliwość, bo nie wiem co za cuda dzieja się w backbonie, jednakże, gdy pobieram zapytanie w api, np. dla produktów "tasty potato", ..., otrzymuję zapytanie GET:
/recipes/?advanced=true&limit=30&short=true&sort_by=rate&query=%5B%22tasty+potato%22%2C%22mmmm+onion%22%2C%22lovely+peanuts%22%5D&page=1
W związku z tym dwie sprawy:
b64decode(args['query'])
oczywiście nie działa./recipes/
, jest więc przechwytywane przez Recipes
. Asia o tym nawet dziś wspominała. Czy możemy zamienić adresację zapytania na /recipes/advanced
, jak mówiliśmy wcześniej, czy mam kombinować, aby to stamtąd przekierować?Podobny mechanizm wykorzystujemy przy normalnym wyszukiwaniu. Z tego co pamiętam to Flask sam odkodowuje Base64 w standardowych przypadkach. Najlepiej jeśli przetestujesz to z webapp.
Tak w ogóle to nie wiem czy jest sens się z tym bawić dalej. Jeśli teraz coś przestanie działać to rano będzie problem. To pokazuje, że na ostatnią chwilę nie robi się ficzurów tylko jakieś pierdoły.
EDIT. Teraz tak patrzymy z Asią to jednak nie kodujemy tego na Base64. Kodowanie, które tam to zwykłe url-encoding i parser argumentów RequestParser
sobie z tym poradzi.
Dokładnie, jednak nie kodujemy w base64. Ponieważ arsg['query'] po parsowaniu argumentów to string to aby mieć listę wystarczy json.loads(args['query']).
tak, masz rację, już to działa:) właśnie testuję. Wrzucę na brancha jak wszystko sprawdzę i ocenicie, czy coś może zepsuć i czy jest sens dodawać, jeśli będziecie chcieli.
Moje doświadczenie z Pythonem i SQLAlchemy jest widocznie zbyt małe, bo nie wiem na czym polega tam błąd - na ilist jest lista nazw składników - chcę pobrać id potraw do których się odnoszą, może robię zbyt wiele przejść w jednym mapowaniu, nie wiem...Siedzę i siedzę, a może Wy znając tę bibliotekę lepiej znajdziecie błąd w trymiga, więc wrzucam.