"_test_"
"___test___"
Dlaczego nie mogę przekazać dict jako kwargs ?
https://pastebin.com/1A2vAw8x
Wyrzuca błąd:
"TypeError: try_dict() takes 0 positional arguments but 1 was given"
#python
https://pastebin.com/1A2vAw8x
Wyrzuca błąd:
"TypeError: try_dict() takes 0 positional arguments but 1 was given"
#python
- 1
@scorpio18k: daj dwie gwiazdki też przy wywołaniu funkcji
@scorpio18k:
Dobra nie chce mi się edytować, bo umieszczanie tutaj kodu to jest śmiech na sali xD
Formatowanie działa doskonale na wykopie ( ͡° ͜ʖ ͡°)
some_dict = {'1': 123, '2':345}
def some(**kwargs):
print(kwargs.get('1'))
some(**some_dict)
Dobra nie chce mi się edytować, bo umieszczanie tutaj kodu to jest śmiech na sali xD
Formatowanie działa doskonale na wykopie ( ͡° ͜ʖ ͡°)
Mam funkcję która zwraca listę studentów, którzy należą do danej grupy
oraz drugą funkcję która zwraca grupy do których jest zapisany student.
Zgodnie z zasadą "dry" chciałem zrobić z tego jedną funkcję (ta która jest najniżej):
https://pastebin.com/nwQkzHaN
ale nie wiem co wstawić w miejsce "????".
Da się to w ogóle zrobić i jak ?
#django #python
oraz drugą funkcję która zwraca grupy do których jest zapisany student.
Zgodnie z zasadą "dry" chciałem zrobić z tego jedną funkcję (ta która jest najniżej):
https://pastebin.com/nwQkzHaN
ale nie wiem co wstawić w miejsce "????".
Da się to w ogóle zrobić i jak ?
#django #python
- 2
@scorpio18k: no ale podstawowe pytanie, po co? Dzięki dodatkowej abstrakcji masz jedną linijkę zamiast dwóch, za to dochodzi ci import. Czytelność za to leci na pysk. Zastanów się sam, czy widząc w czyimś kodzie funkcję
get_items_by_item
spodziewałbyś się dostać jakąś kolekcję itemów, czy obiekt response? Możesz zawsze zmienić na get_items_by_item_and_create_response
, no ale tutaj już po samej nazwie widać że coś śmierdzi. Zaraz jeszcze pojawi się pewnie sytuacja, że pomiędzy wyciągnięciem- 1
@scorpio18k: nawet nie, to o co mi chodziło nazywa się viewset. Doczytaj chociaż tutorial do końca zanim zaczniesz się bawić w uzupełnianie "brakujących" rzeczy, długi nie jest. ( ͡° ͜ʖ ͡°)
Jak zapisać przez serializera DRF #django obiekt z polem "many to many" ?
Jak próbuję utworzyć obiekt za pomocą:
if serializer.is_valid():
serializer.save()
to mi wyrzuca "KeyError:" w miejscu gdzie jest pole "many to many"
Jak próbuję utworzyć obiekt za pomocą:
if serializer.is_valid():
serializer.save()
to mi wyrzuca "KeyError:" w miejscu gdzie jest pole "many to many"
nie wiem czemu DRF pozwala na zapisywanie czegokolwiek w serializerze
@CancerLight: @Tank1991: No, to mogę zapisać bez serializera. Myślałem, że tak się robi.
A co ze zmianą? Jak robię PUT to też przez serializera zapisuje. Czy to też powinno się robić bez użycia serializer.save() ?
- 0
@scorpio18k: robi sie drfem jak masz typowe crudy. Co do key errora to sprawdz tam czy odrazu nie zapisujesz obiektu z m2n bo najpierw musisz miec bazowy potem mozesz dodawac relacje m2m
Mam coś takiego:
https://pastebin.com/sJdrxHXx
Problem w tym, że Jak ten komponent umieściłem w ten sposób:
to value wewnątrz Example ustawia się na undefined i tak zostaje.
Jak to zrobić prawidłowo?
Co ciekawe, jak coś zmienię wewnątrz Example i zapiszę to pojawi się prawidłowa wartość, ale po odświeżeniu strony znika.
#react #reactjs
https://pastebin.com/sJdrxHXx
Problem w tym, że Jak ten komponent umieściłem w ten sposób:
to value wewnątrz Example ustawia się na undefined i tak zostaje.
Jak to zrobić prawidłowo?
Co ciekawe, jak coś zmienię wewnątrz Example i zapiszę to pojawi się prawidłowa wartość, ale po odświeżeniu strony znika.
#react #reactjs
@postrachNocnegoSzczura: To też ale nie w tym problem.
Udało mi się rozwiązać to za pomocą:
{fetchedValue && }
Z tego co ogarnąłem, to Example ładował się z wartością undefined zanim się pobrały dane z bazy danych i tak zostawało. Dzięki { fetchedValue && ... } ładuje komponent dopiero gdy coś tam jest.
Udało mi się rozwiązać to za pomocą:
{fetchedValue && }
Z tego co ogarnąłem, to Example ładował się z wartością undefined zanim się pobrały dane z bazy danych i tak zostawało. Dzięki { fetchedValue && ... } ładuje komponent dopiero gdy coś tam jest.
- 0
@scorpio18k: wszystko zależy co chcesz osiągnąć. To co zrobiłeś to nazywa się conditional rendering czyli jak fetchedValue będzie "truly"' to wyrenderuje się . Równie dobrze mogłeś zostawić jak miałeś i w środku Example sprawdzać czy
value
nie istnieje i wyświetlać np. loader itd.https://jsfiddle.net/8r7cm4bs/
Mam wrażenie, że przekombinowałem z funkcją "idstotext".
Pewnie da się to zrobić w jednej linijce.
Chodzi o to, żeby wartości z tablicy "idsArr" zamienić na odpowiadający im tekst z tablicy obiektów "objs".
Można to zrobić prościej?
#javascript
Mam wrażenie, że przekombinowałem z funkcją "idstotext".
Pewnie da się to zrobić w jednej linijce.
Chodzi o to, żeby wartości z tablicy "idsArr" zamienić na odpowiadający im tekst z tablicy obiektów "objs".
Można to zrobić prościej?
#javascript
- 0
@scorpio18k: a masz kontrolę nad django? Bo jak masz, to poproś bazę o te, co cię interesują. Zserializuj je jakoś porządnie, żebyś nie musiał stawać na głowie na froncie.
@scorpio18k: Jeśli wiesz, ze zestaw danych wyszukiwanych będzie mniejszy od zestawu danych w których szukasz, to powinines przede wszystkim zacząć operację od tego mniejszego zestawu.
https://jsfiddle.net/be7xmsow/
Zwrot uwagę na czas wykonania mojej i Twojej funkcji w konsoli (tylko nie tej z jsfiddle, a tej w devtoolsach)
https://jsfiddle.net/be7xmsow/
Zwrot uwagę na czas wykonania mojej i Twojej funkcji w konsoli (tylko nie tej z jsfiddle, a tej w devtoolsach)
let preventFunction = (event) => {
event?.preventDefault
...coś tam dalej
}
event?.preventDefault ma sens?
Chodzi o to, że jak argument będzie miał opcję preventDefault to żeby ją wywołał a jak nie to nie
#javascript
event?.preventDefault
...coś tam dalej
}
event?.preventDefault ma sens?
Chodzi o to, że jak argument będzie miał opcję preventDefault to żeby ją wywołał a jak nie to nie
#javascript
- 3
- 3
@scorpio18k: event.preventDefault?.() - taki zapis zadziała tak jak chcesz
@scorpio18k: generalnie tak, takie wywołanie zwraca do arg poprzednia wartość a w tym przypadku będzie to initial value
let year = 2022;
let month = 8;
let day = 10;
console.log(year);
console.log(month);
console.log(day);
console.log(new Date(year, month, day));
Wyrzuca:
2022
8
10
Sat Sep 10 2022 00:00:00 GMT+0200 (czas środkowoeuropejski letni)
Dlaczego Date zwraca September zamiast ósmego miesiąca czyli August ?
#javascript
let month = 8;
let day = 10;
console.log(year);
console.log(month);
console.log(day);
console.log(new Date(year, month, day));
Wyrzuca:
2022
8
10
Sat Sep 10 2022 00:00:00 GMT+0200 (czas środkowoeuropejski letni)
Dlaczego Date zwraca September zamiast ósmego miesiąca czyli August ?
#javascript
- 17
@scorpio18k:
wiedziałbyś gdybyś zajrzał do dokumentacji: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
wiedziałbyś gdybyś zajrzał do dokumentacji: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date
Integer value representing the month, beginning with 0 for January to 11 for December.
Dlaczego nie usuwa duplikatów?
let setTest = new Set();
setTest.add({"1":"2"});
setTest.add({"1":"3"});
setTest.add({"1":"2"});
setTest.add({"1":"2"});
console.log(set_test);
Wynik:
0:
value: {1: '2'}
1:
value: {1: '3'}
2:
value: {1: '2'}
3:
value: {1: '2'}
#javascript
let setTest = new Set();
setTest.add({"1":"2"});
setTest.add({"1":"3"});
setTest.add({"1":"2"});
setTest.add({"1":"2"});
console.log(set_test);
Wynik:
0:
value: {1: '2'}
1:
value: {1: '3'}
2:
value: {1: '2'}
3:
value: {1: '2'}
#javascript
@scorpio18k bo to 3 różne obiekty
@scorpio18k tak zadziała, bo zmieniasz obiekt na stringa
Plan jest taki, żeby skonsolidować to:
[{'x': 10, 'y': 4}, {'x': 12, 'y': 4}, {'x': 10, 'y': 5}, {'x': 15, 'y': 40}, {'x': 4, 'y': 2}, {'x': 10, 'y': 5}]
do tego:
{15: [40], 12: [4], 10: [5, 4], 4: [2]}
Czyli wartości 'x' stają się kluczami.
A wartości y wskakują do listy do odpowiedniego klucza.
Dodatkowo klucze i wartości mają być sortowane od największej do najmniejszej.
Moje rozwiązanie:
https://pastebin.com/9jQPkGtq
Da się
[{'x': 10, 'y': 4}, {'x': 12, 'y': 4}, {'x': 10, 'y': 5}, {'x': 15, 'y': 40}, {'x': 4, 'y': 2}, {'x': 10, 'y': 5}]
do tego:
{15: [40], 12: [4], 10: [5, 4], 4: [2]}
Czyli wartości 'x' stają się kluczami.
A wartości y wskakują do listy do odpowiedniego klucza.
Dodatkowo klucze i wartości mają być sortowane od największej do najmniejszej.
Moje rozwiązanie:
https://pastebin.com/9jQPkGtq
Da się
@scorpio18k przepraszam, nie pomogę. Zgubiłem się już na 5 słowie.
- 3
@scorpio18k: Nie wiem chodzi ci po prostu o
Aha i ta linijka niema sensu:
>>> from collections import defaultdict
>>> res = defaultdict(set)
>>> for o in x_and_y:
... res[o['x']].add(o['y'])
Aha i ta linijka niema sensu:
dict(sorted(x_and_y_ok.items(), reverse=True))
, bo slownik i tak ustawi po swojemu. Po prostu posortuj na końcu:print(sorted(( k,sorted(v) for k,v in es.items() )))
Mam takie coś, co pokazuje różne lata z bazy danych:
class Example(models.Model):
date = models.DateField()
(...)
gdzieś dalej w kodzie:
examples = Example.objects.all()
distinctyears = set()
for example in examples:
distinctyears.add(example.date.year)
print(distinct_years)
Jest jakiś sposób, żeby zamiast pobierać wszystko z bazy danych i sortować to od razu pobrać "distinct years" ?
#django #python
class Example(models.Model):
date = models.DateField()
(...)
gdzieś dalej w kodzie:
examples = Example.objects.all()
distinctyears = set()
for example in examples:
distinctyears.add(example.date.year)
print(distinct_years)
Jest jakiś sposób, żeby zamiast pobierać wszystko z bazy danych i sortować to od razu pobrać "distinct years" ?
#django #python
@scorpio18k: https://docs.djangoproject.com/en/4.0/ref/models/database-functions/
Example.objects.values(year=ExtractYear('date')).distinct()
Example.objects.values(year=ExtractYear('date')).distinct()
mam coś takiego:
let [test, setTest] = useState([]);
Wygląda na to, że jak w useEffect zrobiłem:
let x = test;
to nie skopiowałem wartości do x tylko tak naprawdę dalej operuję na zmiennej test
Z tego co wiem to nie powinienem operować na zmiennej test bo użyłem useEffect.
Powinienem ją ustawiać za pomocą setTest.
Jak prawidłowo skopiować wartości z test tak, żeby x nie wskazywało na test ?
#react #javascript
let [test, setTest] = useState([]);
Wygląda na to, że jak w useEffect zrobiłem:
let x = test;
to nie skopiowałem wartości do x tylko tak naprawdę dalej operuję na zmiennej test
Z tego co wiem to nie powinienem operować na zmiennej test bo użyłem useEffect.
Powinienem ją ustawiać za pomocą setTest.
Jak prawidłowo skopiować wartości z test tak, żeby x nie wskazywało na test ?
#react #javascript
- 5
@ownadi: Teraz jest structuredClone()
A jak mam:
https://codesandbox.io/embed/hardcore-mountain-g6in09?fontsize=14&hidenavigation=1&theme=dark
to jak opakować ten wewnętrzny map w diva, żeby było:
0:0:false0:1:false0:2:false0:3:false
1:0:false1:1:false1:2:false1:3:false
2:0:false2:1:false2:2:false2:3:false
zamiast w jednej linii tak jak teraz?
#react #javascript
https://codesandbox.io/embed/hardcore-mountain-g6in09?fontsize=14&hidenavigation=1&theme=dark
to jak opakować ten wewnętrzny map w diva, żeby było:
0:0:false0:1:false0:2:false0:3:false
1:0:false1:1:false1:2:false1:3:false
2:0:false2:1:false2:2:false2:3:false
zamiast w jednej linii tak jak teraz?
#react #javascript
Mam takie coś:
https://codesandbox.io/embed/festive-zhukovsky-cpjuu9?fontsize=14&hidenavigation=1&theme=dark
jak wyświetlić wartość wewnątrz tablicy, próbowałem
( items.map( (x)=>{x}
))
ale nic nie wyświetla? A powinno pokazać się 12 x false
#javascript #react
https://codesandbox.io/embed/festive-zhukovsky-cpjuu9?fontsize=14&hidenavigation=1&theme=dark
jak wyświetlić wartość wewnątrz tablicy, próbowałem
( items.map( (x)=>{x}
))
ale nic nie wyświetla? A powinno pokazać się 12 x false
#javascript #react
@scorpio18k: ponieważ JSX pomija "fałszywe" wyrażenia, więc musisz tą wartość zamienić na string -> String(false)
- 1
Co może być nie tak?
Kod:
https://pastebin.com/nnLycLh9
Skąd w dacie (w przykładach z konsoli poniżej) bierze się 2027 albo 2029 skoro wyraźnie podaje 2022 ?
Przykładowy wynik z konsoli 1:
choosedMonth
7
choosedYear
2022
new Date(choosedYear, choosedMonth+1, 0)
Tue Nov 30 2027 00:00:00 GMT+0100 (czas środkowoeuropejski standardowy)
Przykładowy wynik z konsoli 2:
choosedMonth
9
choosedYear
2022
new Date(choosedYear, choosedMonth+1, 0)
Tue Jul 31 2029 00:00:00 GMT+0200 (czas środkowoeuropejski letni)
#javascript #react #
Kod:
https://pastebin.com/nnLycLh9
Skąd w dacie (w przykładach z konsoli poniżej) bierze się 2027 albo 2029 skoro wyraźnie podaje 2022 ?
Przykładowy wynik z konsoli 1:
choosedMonth
7
choosedYear
2022
new Date(choosedYear, choosedMonth+1, 0)
Tue Nov 30 2027 00:00:00 GMT+0100 (czas środkowoeuropejski standardowy)
Przykładowy wynik z konsoli 2:
choosedMonth
9
choosedYear
2022
new Date(choosedYear, choosedMonth+1, 0)
Tue Jul 31 2029 00:00:00 GMT+0200 (czas środkowoeuropejski letni)
#javascript #react #
@scorpio18k: Wg https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date rok może się przekręcić, jeśli podasz wartość miesiąca większą niż 11. Poza tym bez sensu dodajesz 1 do miesiąca, powinieneś ją odjąć. No i poprawnie po angielsku jest
chosen
a nie choosed
.No i można polecić day.js do ludzkiej obsługi dat ;)
Mam zaimportowaną funkcję. Jak zrobiłem console.log(funkcja(45)) to mi pokazało:
Promise {}
[[Prototype]]: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: Array(2)
0: {id: 74, firstname: 'Aleksandra', …}
1: {id: 72, firstname: 'Jan', …}
length: 2
[[Prototype]]: Array(0)
Jak zrobić, żeby przerobić to na zwykły Array ?
#javascript
Promise {}
[[Prototype]]: Promise
[[PromiseState]]: "fulfilled"
[[PromiseResult]]: Array(2)
0: {id: 74, firstname: 'Aleksandra', …}
1: {id: 72, firstname: 'Jan', …}
length: 2
[[Prototype]]: Array(0)
Jak zrobić, żeby przerobić to na zwykły Array ?
#javascript
Tak z ciekawości; Jest sposób, żeby wygenerować tagi html np. "p" wewnątrz jsx inaczej niż za pomocą map?
Dajmy na to, że mam okienko, gdzie użytkownik wpisuje liczbę, dajmy na to 20.
Naciska start i ma się wygenerować 20 elementów cośtam
Żeby to zrobić w jsx #react to bym wygenerował tablicę 20 liczb i na niej wykonał "map".
Da się to zrobić bez generowania tablicy, np. za pomocą for?
#javascript #reactjs
Dajmy na to, że mam okienko, gdzie użytkownik wpisuje liczbę, dajmy na to 20.
Naciska start i ma się wygenerować 20 elementów cośtam
Żeby to zrobić w jsx #react to bym wygenerował tablicę 20 liczb i na niej wykonał "map".
Da się to zrobić bez generowania tablicy, np. za pomocą for?
#javascript #reactjs
- 4
@Chanandler:
Array(20).fill("costam
")
Mam coś takiego:
https://pastebin.com/yN5juSKn
Jak zrobić to samo ale tylko z pierwszym elementem?
Jak próbuję:
{ groups[0].id }
to wywala:
Uncaught TypeError: Cannot read properties of undefined (reading 'id')
A to wcześniejsze z pastebina działa elegancko. Tylko, że potrzebuję "id" pierwszej grupy a nie wszystkich.
#javascript #react #reactjs
https://pastebin.com/yN5juSKn
Jak zrobić to samo ale tylko z pierwszym elementem?
Jak próbuję:
{ groups[0].id }
to wywala:
Uncaught TypeError: Cannot read properties of undefined (reading 'id')
A to wcześniejsze z pastebina działa elegancko. Tylko, że potrzebuję "id" pierwszej grupy a nie wszystkich.
#javascript #react #reactjs
- 1
@scorpio18k: Wywala error, czyli ten array nie ma żadnych danych w pewnym momencie (przykładowo na samym początku, gdy nic do niego nie załadowałeś, a strona już się zaczyna renderować). Dodaj warunek ze sprawdzaniem, czy istnieje [0] i będzie dobrze.
- 1
@scorpio18k: Możesz też pisać sobie const [ group ] = groups i potem {group ? '' : ''}
getStudent();
},[])
ESlint wyrzuca: React Hook useEffect has missing dependencies: 'getStudent'
Chodzi o to, żeby przy ładowaniu się komponentu pobrać raz dane, dlatego jest pusta tablica na końcu.
Funkcję getStudent używam jeszcze kilka razy i nie wydaje mi się, żeby przekopiowanie wnętrza funkcji było najlepszym pomysłem.
Jak rozwiązać ten błąd?
#react #reactjs
po pierwsze owrapuj deklarację funkcji getStudent w useCallback, po drugie w useEffectcie dodaj dependency getStudent. Alternatywnie możesz zignorować ten błąd dodając komentarz wyłączający eslinta dla tej linijki
No jakby był argument to nie bo byś wtedy w useCallbacku musiał dać x jako dependency ale to akurat dobrze bo przecież najpewniej chciałbyś pobrać dane odnośnie innego studenta jakby x się zmienił