• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Django - wyciągniecie danych z dwóch modeli do widoku w formie tabeli...

Object Storage Arubacloud
0 głosów
235 wizyt
pytanie zadane 9 lutego 2023 w Python przez reaktywny Nałogowiec (40,990 p.)

Witam, mam pytanie odnośnie Django:

Mam dwa modele:

 

class Car(models.Model):
    model_name = CharField(...)
    make_name = CharField(...)
    car_exterior_color=  = CharField( CHOICES )
     
    
class CarWash(models.Model):
   car_washed = BooleanField(...)
   wash_date = DateTimeField(...)
   added_wax = BooleanField(...)
   car = models.OneToOneField(Car, on_delete=models.CASCADE, verbose_name="Car washed")
   
   

 

Chce je przedstawić w widoku w formie tabeli:

|------------|-----------|-------------|--------------|-------------|------------|
| model_name | make_name | car_ext_col | car_washed ? | added_wax ? | wash date  |
|------------|-----------|-------------|--------------|-------------|------------|
| IS         | Lexus     |  blue       |     Yes      |     No      | 2023-02-02 |    
| G37        | Infiniti  |  white      |     No       |     No      |      --    |
| RX         | Lexus     |  red        |     Yes      |     No      | 2023-02-02 |    
| Corolla    | Toyota    |  green      |     No       |     No      |      --    |
| Tundra     | Toyota    |  blue       |     Yes      |     Yes     | 2023-02-02 |    
| Q70        | Infiniti  |  yellow     |     Yes      |     Yes     | 2023-02-03 |
| Civic      | Honda     |  black      |     Yes      |     No      | 2023-02-03 |    
| Malibu     | Chevrolet |  red        |     Yes      |     Yes     | 2023-02-04 |
| GS         | Lexus     |  yellow     |     Yes      |     No      | 2023-02-04 |    
| Q30        | Infiniti  |  white      |     No       |     No      |      --    |
|------------|-----------|-------------|--------------|-------------|------------|


Jak to zrobić?  Jak powinno wyglądać query w views.py?

Dziękuję za pomoc!

 

2 odpowiedzi

+1 głos
odpowiedź 9 lutego 2023 przez adrian17 Ekspert (344,860 p.)
wybrane 9 lutego 2023 przez reaktywny
 
Najlepsza

We viewsach teoretycznie zwykłe

CarWash.objects.all()

wystarczy. Wtedy możesz albo w Pythonie albo w templacie używać

print(carwash.wash_date)
print(carwash.car.model_name)

i tyle.

Jedyne co powinieneś dodać to wywołać jeszcze select_related(), żeby nie po jednym zapytaniu SQLowym dla każdego `carwash.car`, tylko wyciągnął wszystkie na raz w jednym JOINie:

CarWash.objects.select_related('car').all()

 

komentarz 9 lutego 2023 przez reaktywny Nałogowiec (40,990 p.)

Wielkie dzięki, w międzyczasie sobie z tym poradziłem, ale pojawił się kolejny problem.

0 głosów
odpowiedź 9 lutego 2023 przez reaktywny Nałogowiec (40,990 p.)
Ja się zastanawiam jak wyświetlić wszystkie samochody, które:

- były myte w myjni

- takie które nie były myte w myjni

??

Jak to najlepiej rozwiązać?

Przychodzi mi do głowy dodanie BooleanField do modelu Car, ale nie wiem jak z metody on_save modelu CarWash zapisać informacje w modelu Car.

Podobne pytania

0 głosów
1 odpowiedź 196 wizyt
pytanie zadane 16 kwietnia 2023 w Python przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 211 wizyt
pytanie zadane 8 marca 2023 w Python przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 307 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...