• 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...

0 głosów
562 wizyt
pytanie zadane 9 lutego 2023 w Python przez reaktywny Nałogowiec (46,210 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 Mentor (355,160 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 (46,210 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 (46,210 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ź 652 wizyt
pytanie zadane 16 kwietnia 2023 w Python przez tonn204 Mądrala (7,470 p.)
0 głosów
1 odpowiedź 669 wizyt
pytanie zadane 8 marca 2023 w Python przez tonn204 Mądrala (7,470 p.)
0 głosów
1 odpowiedź 493 wizyt

93,759 zapytań

142,716 odpowiedzi

323,364 komentarzy

63,357 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...