Python 如何在视图中使用django对象

Python 如何在视图中使用django对象,python,django,Python,Django,我的意图是,每次sms发送到我的服务器时,服务器都应该查看数据库,以查看sms中的号码是否已经是存储的对象。如果不是,则创建该对象并将其保存到数据库。我做错了什么 views.py from django.http import request from django_twilio.decorators import twilio_view from django_twilio.request import decompose from twilio.twiml.messaging_respon

我的意图是,每次sms发送到我的服务器时,服务器都应该查看数据库,以查看sms中的号码是否已经是存储的对象。如果不是,则创建该对象并将其保存到数据库。我做错了什么

views.py

from django.http import request
from django_twilio.decorators import twilio_view
from django_twilio.request import decompose
from twilio.twiml.messaging_response import MessagingResponse
from .models import Contacts

@twilio_view
def sms_choice(request):
    twilio_request = decompose(request)
    contact_num = twilio_request.from_
    contact_info = ['Thanks for your subscription', 
                    "How old are you?", "Annual Income?"]
    response = twilio_request.body
    resp = MessagingResponse()
    subscribers = [Contacts.objects.all()]
    for contact in subscribers:
        if contact_num != contact.customer_number:
            b = Contacts(customer_number=contact_num)
            b.save()
            resp.message(contact_info[0])
        elif contact_num == contact.customer_number:
            resp.message(contact_info[1])

    print(contact_num, response)
    return str(resp)
models.py

from django.db import models


class Contacts (models.Model):
    customer_number = models.CharField(max_length=15)
    customer_age = models.CharField(max_length=4,
                                    null=True)
    customer_income = models.CharField(max_length=10,
                                       null=True)

    def __unicode__(self):
        return self.customer_number

您似乎有两种情况:在第一种情况下,您的数据库中不存在联系人号码,因此您希望回复消息1;在第二种情况下,联系人号码确实存在,因此您希望回复消息2

因此,您应该检查是否有一个带有该编号的记录,如果没有,则创建它。这里有一个快捷方式:
get\u或\u create

resp = MessagingResponse()
contact, created = Contacts.objects.get_or_create(customer_number=contact_num)
if created:
    resp.message(contact_info[0])
else:
    resp.message(contact_info[1])
    # I presume you want to update the customer age here
    contact.age = response
    contact.save()
return resp

您似乎没有描述正在发生的事情,也没有描述它与您预期的不同之处。当我测试代码时,它只是创建一个新的类实例,而不是在d.b中找到它。但这是您告诉它要做的。你到底想发生什么?我想做的是,如果号码已经存储并收到了第一个联系人信息问题,服务器应该回答第二个问题(还要注意,这不能是您的实际代码,因为这里的
订阅者
是一个包含查询集的列表;对其进行迭代将不起作用。请始终发布实际代码。)