2015-05-13 2 views
0

Я пытаюсь получить последний вставленный объект из моей модели Reading по полю reading.Как вернуть последний объект, вставленный в Django?

Пытаюсь так:

@csrf_exempt 
def get_config(request): 
    if request.method == 'POST': 
     reading = Reading.objects.latest('reading') 
     print reading 
     #reading = 10  

     return HttpResponse(json.dumps(str(reading)), content_type="application/json") 
    return render(request, 'web/home.html') 

И это моя модель:

from django.db import models 
... 
class Reading(models.Model): 
    resource = models.ForeignKey(Resource) 
    reading = models.IntegerField() 
    date = models.DateTimeField('date', auto_now_add=True) 

    def __unicode__(self): 
     return u'%s | %s' % (self.resource.urn, self.reading) 

Проблема заключается в том, что я получаю __unicode__ возвращается независимо от того, что я спрашиваю в мой views для возврата.

Любые идеи или предложения?

+0

Но ваш взгляд * есть * запрос '__unicode__'. Он явно вызывает 'str' на объекте. –

+0

Привет @DanielRoseman, я новичок в python + django. Не могли бы вы объяснить? –

+2

'чтение' - это объект, вы вызываете на нем' str', который использует код для преобразования его в строку, которая является методом '__unicode__'. Если вам не требуется строковое представление объекта, не называть его 'str'. –

ответ

1

Если вы хотите вывести значение поля экземпляра затем передать это поле dumps() вместо всего объекта:

json.dumps(str(reading.reading)) 

Вы также можете опустить str() вызов, если вы хотите, чтобы вернуть номер вместо строки:

json.dumps(reading.reading) 
+0

Спасибо @cataravan, моя ошибка заключалась в том, что я считаю, что 'read = Reading.objects.latest ('reading')' будет возвращать значение, а не объект. Спасибо! –

Смежные вопросы