2017-09-03 4 views
-1

J'ai récemment migré de PHP vers django. Je suis en train de créer un projet qui fonctionne sur django .. Je suis habitué à écrire du sql personnalisé en php et donc je veux utiliser raw() pour filtrer les résultats de ma base de données dans django.USE SQL brut dans Django

Cependant je ne suis pas en mesure de comprendre comment fonctionne django ..

S'il vous plaît trouver mon code ci-dessous.

Actuellement, je reçois la sortie mentionné ci-dessous

[('11677795635',), ('12345',)] 

Je veux utiliser une boucle pour et imprimer les résultats dans le format mentionné ci-dessous.

pouvez-vous s'il vous plaît me aider sur la façon de boucle dans django ..

En PHP,
même était possible par

$query=mysql_query("SELECT abcdashboard_customerinfo.customerbuyingid FROM abcdashboard_customerinfo WHERE abcdashboard_customerinfo.customerbuyingid in (select DISTINCT abcdashboard_orders.customerid from abcdashboard_orders)"); 
$queryrun=mysql_num_rows($query);  
for ($f=0; $f <$queryrun; $f++) 
    { 
     ${'customer'.$f}=mysql_result($query,$f, 'customerbuyingid'); 
     echo ${'customer'.$f}; 
    } 

models.py

class customerinfo(models.Model): 
    customerbuyingid = models.CharField(max_length=300, default='invalid customer id in database') 
    customername = models.CharField(max_length=300, default='invalid customer name in database') 
    customerphonenumber = models.CharField(max_length=12, default='0000000000') 
    customermailid= models.CharField(max_length=80, default='[email protected]') 

class orders(models.Model): 
    orderid = models.CharField(max_length=200) 
    orderstatus = models.CharField(max_length=10) 
    externalpurchaseid = models.CharField(max_length=100) 
    externalstatus = models.CharField(max_length=100) 
    customerid = models.CharField(max_length=100) 
    ops = models.CharField(max_length=100) 
    orderdate = models.DateField() 
    updatedon = models.DateTimeField(default=timezone.now) 

views.py

def index(request): 
    all_customer = customerinfo.objects.all() 
    cursor = connection.cursor() 
    cursor.execute('''SELECT abcdashboard_customerinfo.customerbuyingid FROM abcdashboard_customerinfo WHERE abcdashboard_customerinfo.customerbuyingid in (select DISTINCT abcdashboard_orders.customerid from abcdashboard_orders) ''') 
    row = cursor.fetchall() 
    print (row) 
    context = {"row": row} 
    return render(request, "abcdashboard/index.html", context) 

Index.html

<html> 
<head> 
    <title> 

    </title> 

</head> 

<body> 
    <ul> 
<h2 align="center"> SQL Queries display </align> </h2> 

{% block content %} 

{{ row }} 

{% endblock %} 
    </ul> 

</body> 

</html> 
+2

Ne faites pas cela. Si vous voulez écrire Django, vous devriez écrire Django –

Répondre

0

Il suffit de remplacer:

dans views.py:

row = cursor.fetchall() 
print (row) 
context = {"row": row} 

avec:

ids = [] 
for row in cursor.fetchall(): 
    id = row[0] 
    ids.append(id) 
context = {'rows': ids} 
... 

dans index.html:

{{ row }} 

avec

{% for id in rows %} 
{{ id }} 
{% endfor %}