I am working on integrating social search through the Datasift API into my
project.
The API gives a json object, and I have printed part of it out to the
screen, so I know that the link is working and I am receiving the right
stuff.  I now want to save some of the fields from the json to a model.
models.py:
class SearchResult(models.Model):
    sm_User = models.CharField(max_length = 100)
    sm_Name = models.CharField(max_length = 100)
    sm_created_at = models.CharField(max_length = 100)
    sm_content = models.CharField(max_length = 160)
    sm_Source = models.CharField(max_length = 100)
    sm_Link = models.CharField(max_length = 150)
    sm_type = models.CharField(max_length = 50)

    def __unicode__(self):
        return self.sm_content

views.py
def runsearch(request, dSearch_id):
    search = dSearch.objects.get(pk = dSearch_id)
    search_name = str(search.dName)
    search_keywords = str(search.dKeywords)
    template = loader.get_template('myapp/runsearch.html')
    results = SearchResult.objects.all()
    if len(results)==0:
        getinteractions.GetPosts(search_keywords)
    results = SearchResult.objects.all()
    context = Context({
        'search_name': search_name,
        'search_keywords': search_keywords,
    })
    return HttpResponse(template.render(context))

in getinteractiions.py:
def GetPosts(keyword):
    user = datasift.User('nigellegg', '1d940b94903285ff73ba0dbe1b13a8a3')
    csdl = 'interaction.content contains "football" and language.tag ==
"en"'
    definition = user.create_definition(csdl)
    consumer = definition.get_consumer(EventHandler(), 'http')
    consumer.consume()
    consumer.run_forever()

class EventHandler(datasift.StreamConsumerEventHandler):
    def __init__(self):
        self.num = 10

 def on_interaction(self, consumer, interaction, hash):
        result = SearchResult()
        result.sm_type = interaction['interaction']['type']
        if interaction['interaction']['type']=='twitter':
            result.sm_User =
interaction['interaction']['author']['username']
            result.sm_Name = interaction['interaction']['author']['name']
        result.sm_created_at = interaction['interaction']['created_at']
        result.sm_content =
interaction['interaction']['content'].encode('ascii', 'replace')
        result.sm_Source = interaction['interaction']['source']
        result.sm_Link = interaction['interaction']['link']
        result.save()
        self.num -= 1
        if self.num == 0:
            #Stopping consumer...
            consumer.stop()

The page shows ok in the browser, but there are no results.  Looking at the
server log (development server) I get
result.sm_Link = interaction['interaction']['link']
KeyError: 'link'

Is this a reserved name problem, or have I made another error? I'm not sure
I can change the field name, as that is how it came to me from datasift.
Many thanks in advance.
Nigel Legg
http://www.trevanianlegg.co.uk
http://twitter.com/nigellegg
http://uk.linkedin.com/in/nigellegg

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to