Strona główna Polish Python Coders Group
   Strona główna   Pomoc Zaloguj się Rejestracja  
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji

Aktualności: PyStok #42 - wystąpią Łukasz Langa i Dominik Kozaczko
Szukaj Szukaj
Strony: [1]   Do dołu
Drukuj
Wątek: Django formularze z pobieraniem elementów bazy danych  (Przeczytany 589 razy)
« : 20:23 23/04/19 »
Native Offline
Hello World!

Zobacz profil
*

Reputacja: 1
Wiadomości: 20


Witam, mam pytanie odnośnie formularzy...

I na starcie zapytam, czy nie trzeba tego zrobić za pomocą validatorów, czy kombinowac z is_valid ?

O co chodzi? Mam w bazie takie pola.

Grubosc  / 1.0 / 1.5 / 2.0 /
Szerokosc /1080 / 1330 / 1580 /
Stan / 0 / H22 / H24


Wypełniamy formularz i odsyła nas do wynik.html

ALE

Każda kombinacja ma inną ustaloną wartość.

Grubosc = 2.0
Szerokosc = 1580
Stan = H22

Wynik == 1.2

Inny przykład

Grubość = 1.0
Szerokosc = 1080
Stan = H24

Wynik == 0.9



Zapisane
« Odpowiedz #1 : 17:36 24/04/19 »
Rado Offline
Hello World!

Zobacz profil
*

Reputacja: 7
Wiadomości: 35


Możesz trochę jaśniej? Chyba że tylko ja nie kumam
Zapisane
« Odpowiedz #2 : 12:36 25/04/19 »
Guaz Online
Expert Python User

Zobacz profil
****

Reputacja: 69
Płeć: Mężczyzna
Wiadomości: 513


@Rado nie przejmuj się. Też nie rozumiem o co chodzi autorowi posta, czy ma gdzieś błąd, czy szuka gotowca, czy nie wie jak się za to zabrać... Informacji podał za mało, oraz nic nie wiemy o tej cudownej bazie danych która sama sobie jest i tyle Uśmiech .

Nawet nie sprecyzował czy wypełniamy formularz i mamy to wrzucić do bazy, bo temat jest zatytuowany że on chce coś z niej wyciągać, a tu wychodzi coś zupełnie innego ;d.
Zapisane

Python 3.5+ / Mint

Daje wędkę zamiast ryby. Chyba że ktoś się chce czegoś nauczyć, wtedy chętnie pomogę każdemu.
Za rybę niestety trzeba zapłacić Z politowaniem.
« Odpowiedz #3 : 11:51 26/04/19 »
Native Offline
Hello World!

Zobacz profil
*

Reputacja: 1
Wiadomości: 20


Co tu jest niejasne ?  Język

1. Masz formularz
2. Wypełniasz go

Grubosc = 2.0
Szerokosc = 1580
Stan = H22

3. On ma sprawdzić czy te dane są w bazie
4. Na podstawie takich danych ma zwrócić wynik 1.2

....

I tutaj mam problem, że mam formularz i dane w bazie, ale nie wiem jak zwracać wynik na podstawie takich danych pobierając je.
Zapisane
« Odpowiedz #4 : 11:57 26/04/19 »
raydeal Offline
Expert Python User

Zobacz profil
****

Reputacja: 85
Wiadomości: 503


Ja też nadal nie rozumiem. Chodzi Ci o to że przy wypełnianiu formularza na podstawie grubosc, szerokosc, stan chcesz pobrac wartość z bazy i pokazać ją w tym samym formularzu?
Zapisane
« Odpowiedz #5 : 12:11 26/04/19 »
Native Offline
Hello World!

Zobacz profil
*

Reputacja: 1
Wiadomości: 20


@raydeal dokładnie tak Uśmiech
Zapisane
« Odpowiedz #6 : 14:49 26/04/19 »
raydeal Offline
Expert Python User

Zobacz profil
****

Reputacja: 85
Wiadomości: 503


To nie masz zbyt dużo wyboru, albo zrobisz to samemu używając JS do dociągnięcia danych z bazy albo możesz zobaczyć czy django-dynamic-form-fields bedzie się nadawał. Nie używałem więc nie wiem.

Albo jeśli tych danych nie jest zbyt dużo to od razu załadować w widoku przygotowane do tego dane do formularza jako dane w JS i potem to obsłużyć JS bez odwoływania się do bazy.
Zapisane
« Odpowiedz #7 : 13:07 02/05/19 »
Native Offline
Hello World!

Zobacz profil
*

Reputacja: 1
Wiadomości: 20


Nie siedziałem jeszcze w JS. Za co powinienem się zabrać konkretnie, żeby z widoków brać te dane ?
Zapisane
« Odpowiedz #8 : 13:08 02/05/19 »
Aule Offline
Advanced Python User

Zobacz profil WWW
**

Reputacja: 14
Wiadomości: 183


Ile masz takich kombinacji?
Zapisane

« Odpowiedz #9 : 15:32 02/05/19 »
Native Offline
Hello World!

Zobacz profil
*

Reputacja: 1
Wiadomości: 20


Tak wygląda tabela. Wynik to wydłużenie. Które jest zależne od Grubości, Gatunku, Stanu, Szerokości.

Zapisane
« Odpowiedz #10 : 21:34 18/05/19 »
Aule Offline
Advanced Python User

Zobacz profil WWW
**

Reputacja: 14
Wiadomości: 183


Cześć
Przepraszam że dopiero teraz i pewnie już dawno zdążyłeś rozwiązać swój problem ale dla kolejnych osób wydaje mi się że chodzi Tobie o "geta" z bazy bo dane już masz i chcesz je pobrać z formularza dopasować do tego co jest w bazie i zwrócić wynik. Możesz spróbować to zrobić w taki sposób. Bardziej doświadczeni wypowiedzą się czy jest prawidłowy

models.py
Kod
from django.db import models
 
# Create your models here.
class Thickness(models.Model):
   thickness_value = models.CharField(verbose_name="Grubość", max_length=36)
 
 
class Width(models.Model):
   width_value = models.CharField(verbose_name="Szerokość", max_length=36)
 
 
class Type(models.Model):
   type_value = models.CharField(verbose_name="Gatunek", max_length=36)
 
 
class Condition(models.Model):
   condition_value = models.CharField(verbose_name="Stan", max_length=36)
 
 
class Elongation(models.Model):
   thickness_fk = models.ForeignKey(Thickness, on_delete=models.CASCADE)
   width_fk = models.ForeignKey(Width, on_delete=models.CASCADE)
   type_fk = models.ForeignKey(Type, on_delete=models.CASCADE)
   condition_fk = models.ForeignKey(Condition, on_delete=models.CASCADE)
   elongation_value = models.CharField(verbose_name="Wydłużenie", max_length=36)
 

views.py
Kod
# Create your views here.
from django.template import RequestContext
from django.shortcuts import render_to_response
from helpwitchform.models import Elongation, Thickness, Width, Type, Condition
# Create your views here.
 
def find_elongation(request):
   thickness_view = request.GET.get('thickness_temp')
   type_view = request.GET.get('type_temp')
   condition_view = str(request.GET.get('condition_temp'))
   width_view = request.GET.get('width_temp')
 
   if thickness_view and type_view and condition_view and width_view:
       thickness_id = Thickness.objects.get(thickness_value=thickness_view)
       type_id = Type.objects.get(type_value=type_view)
       condition_id = Condition.objects.get(condition_value=condition_view)
       width_id = Width.objects.get(width_value=width_view)
 
       results = Elongation.objects.filter(thickness_fk_id = thickness_id, type_fk_id = type_id,
                                           condition_fk_id = condition_id, width_fk_id= width_id)
       context = RequestContext(request)
       return render_to_response('helpwitchform/index.html', {'results': results , 'thickness_view': thickness_view,
                                                              'type_view': type_view,'condition_view':condition_view,
                                                              'width_view':width_view}, context)
   return render_to_response('helpwitchform/index.html')
 

index.html
Kod
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
   <form method="get" action="" class="form-inline" id="cell">
       <div class="form-group">
           <input type="text" name="thickness_temp" id="id_thickness" autofocus="autofocus" placeholder="Grubość:"/>
           <input type="text" name="type_temp" id="id_type" placeholder="Gatunek:"/>
           <input type="text" name="condition_temp" id="id_condition" placeholder="Stan po piecu:"/>
           <input type="text" name="width_temp" id="id_width" placeholder="Szerokośc meteriału"/>
           <button type="submit" class="btn btn-primary"  id="search" /><span class="glyphicon glyphicon-search"></span> SZUKAJ</div>
       </div>
   </form>
 
   {% if results %}
       <table>
           <TR>
               <th>Grubość</th><th>Gatunek</th><th>Stan po piecu</th><th>Szerokośc meteriału</th><th>Wydłużenie</th>
           </TR>
       {% for results in results %}
           <tr>
               <td>{{thickness_view}}</td> <td>{{type_view}}</td> <td>{{condition_view}}</td>
               <td>{{width_view}}</td> <td>{{results.elongation_value}}</td>
           </tr>
       {%endfor%}
     {% else %}
           Nie znaleziono wydłużenia dla {{thickness_view}}, {{type_view}}, {{condition_view}}, {{width_view}}
   {% endif %}
       </table>
</body>
</html>
 
Zapisane

Strony: [1]   Do góry
Drukuj
Skocz do:  

© 2007 - 2019 Polish Python Coders Group
Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | Theme by PixelSlot