Django

2017-09-29 12 views
9

का उपयोग करते हुए एक Neo4j डीबी पूछताछ मैं हाथ से माफ़ी मांगता हूं क्योंकि Django सोचने का तरीका अभी भी मेरे लिए बहुत ही विदेशी है। मैं एक बहुत ही सरल पृष्ठ उत्पन्न करने की कोशिश कर रहा हूं जो सिर्फ Neo4j और Django (1.9.7) का उपयोग करके एक सरल साइफर क्वेरी से सभी परिणामों को सूचीबद्ध करता है और मैं Django से डेटाबेस तक पहुंचने के लिए पायथन नियो 4j ड्राइवर का उपयोग कर रहा हूं। हालांकि, मैं अटक गया हूं और उस बिंदु पर पहुंच गया हूं जहां मैं केवल अंधाधुंध कोशिश कर रहा हूं, जैसे कि मैं कुछ पॉइंटर्स/सलाह चाहूंगा कि मैं जो हासिल करने की कोशिश कर रहा हूं उसकी मूल बातें कैसे दिखनी चाहिए।Django

models.py

from django.views.generic.listimport ListView 
from neo4j.v1 import GraphDatabase, basic_auth 
from django.db import models 

# Connect to DB 
driver=GraphDatabase.driver("foo1",auth=basic_auth("foo2","foo3")) 
session=driver.session() 

class Stuff(models.Model): 
    query = "MATCH (t:Time) return t" 
    results=session.run(query) 
    # Sanity check -> This just shows that the database and query both work 
    for foo in results: 
    print foo 
    break 
    def __str__(self): 
    return results 

views.py

from django.views.generic.list import ListView 
from .models import Stuff 

# I assume that I should be using a ListView here (as I was trying to get a queryset or similar from my models). 
class IndexView(ListView): 
    template_name = 'index.html' 

    def get_queryset(self): 
    fooList = [] 
    for record in Stuff.objects.get(): 
     fooList.append(record) 
    return fooList 

index.html (परीक्षण नहीं किया जैसा कि मैंने अभी तक 'शो' को यह पाने में कामयाब रहे नहीं किया है)

{% block body %} 

{% if fooList %} 
    <h1>Woot!</h1> 
{% endif %} 

{% endblock %} 

उपर्युक्त बिट्स स्पष्ट रूप से काम नहीं करते हैं और Stuff की शिकायत नहीं करते हैं objects, अभी तक मैं कुल मिलाकर हूं y जारी रखने के तरीके पर खो गया (क्योंकि मैं Django के अंदर इस ड्राइवर का उपयोग करने पर कोई अच्छा उदाहरण/दस्तावेज़ीकरण नहीं ढूंढ पाया)।

+0

क्या आप कह रहे हैं कि आपको Neo4j क्वेरी से 'परिणाम' नहीं मिल रहे हैं? क्या आप जिस मुद्दे का सामना कर रहे हैं उसके साथ कृपया अधिक विशिष्ट हो सकते हैं। – EngineeredBrain

उत्तर

1

neo4j अजगर ड्राइवर रन विधि राज्य में session वस्तु की Documentation

run(statement, parameters=None, **kwparameters) 

यह StatementResult ऑब्जेक्ट से प्रलेखित here

तो डॉक्स के अनुसार कोई objects संपत्ति है और इसलिए .objects.get() विधि नहीं है मौजूद।

लौटे StatementResult में पहुँच रिकॉर्ड करने के लिए सही रास्ता निम्नलिखित के रूप में example में दिखाया गया है:

for record in Stuff: 
    fooList.append(record) 
+0

यह उन चीजों में से एक है जिन्हें मैंने पहले कोशिश की थी, जो 'मॉडलबेस' ऑब्जेक्ट उत्पन्न करती है, यह ' –

+0

इस एसओ [उत्तर] के अनुसार (https://stackoverflow.com/questions/18512491/typeerror-object-is-not-iterable) आप मॉडल उदाहरण पर पुनरावृत्ति नहीं कर सकते हैं। हालांकि अगर आपको अभी भी इसकी आवश्यकता है तो समाधान है। – hlihovac

+0

मैं अभी भी यह काम करने के लिए एक रास्ता तलाश रहा हूं (एक neo4j डेटाबेस से पूछताछ करने और इस ड्राइवर का उपयोग करके परिणाम दिखाने में सक्षम होने के नाते), बस ध्यान रखें कि जब आप 'मॉडल' पर ध्यान केंद्रित कर रहे हैं कि मैं स्वयं 100% निश्चित नहीं हूं मौजूदा neo4j डेटाबेस का उपयोग करते समय इस तरह से 'मॉडल' का उपयोग करना भी सही है। –

0

आप एक फ्लैट शोकहारा लिख ​​सकते हैं:

for record in result: 
     print("%s %s" % (record["title"], record["name"])) 

तो आपके मामले में आप क्या करना चाहते हो सकता है एपीआई को एक फ्रंटेंड के साथ संवाद करने के लिए वास्तव में प्रतिक्रिया डेटाुलर 2 में लिखा जा सकता है ताकि आपका डेटा डंप हो और प्रदर्शित हो सके। तो सबसे पहले, आप डीआरएफ (डीजेगो रेस्ट फ्रेमवर्क) का उपयोग कर सकते हैं, तो सबकुछ आपके views.py और serializers.py और आपके मॉडलों में थोड़ा सा होगा। Django टेम्पलेट से परहेज क्यों करते हैं, क्वेरी लोड आपके ऐप को आसानी से चलाने के लिए प्रभावित कर सकता है।