2009-06-30 12 views
0

表示するアカウントの情報を取得するために、次のコードを表示します。私はこれをORM経由で動作させるために数時間努力しましたが、動作させることができませんでした。私は生のSQLでそれをやってしまったが、私が望むのはあまり複雑ではない。私はORMで可能であると確信しています。Django ORMに相当する

最後に、私はちょうどいくつかのテーブルから辞書accountDetailsを取り込みたいと思う。

cursor.execute("SELECT a.hostname, a.distro, b.location FROM xenpanel_subscription a, xenpanel_hardwarenode b WHERE a.node_id = b.id AND customer_id = %s", [request.user.id]) 
accountDetails = { 
    'username': request.user.username, 
    'hostname': [], 
    'distro': [], 
    'location': [], 
} 

for row in cursor.fetchall(): 
    accountDetails['hostname'].append(row[0]) 
    accountDetails['distro'].append(row[1]) 
    accountDetails['location'].append(row[2]) 

return render_to_response('account.html', accountDetails, context_instance=RequestContext(request)) 
+0

ポストあなたのモデル、私たちが持っていないが、 – zinovii

+0

はと感謝しないでください推測します別の答え、hehe。彼の答えを正しいものとして受け入れてください。 – drozzy

答えて

2

モデルを投稿する方が簡単です。しかし、SQLから、私はモデルを仮定している。このようなものです。これらのモデルに基づいて

class XenPanelSubscription(models.Model): 
    hostname = models.CharField() 
    distro = models.CharField() 
    node = models.ForeignKey(XenPanelHardwareNode) 
    customer_id = models.IntegerField() 

    class Meta: 
     db_table = u'xenpanel_subscription' 

class XenPanelHardwareNode(models.Model): 
    location = models.CharField() 

    class Meta: 
     db_table = u'xenpanel_hardwarenode' 

accountDetails = XenPanelSubscription.objects.filter(customer_id = request.user.id) 
for accountDetail in accountDetails: 
    print accountDetail.hostname, accountDetail.distro, accountDetail.node.location