将传入的短信号码存储在服务器中(TypeError:'type'对象不可迭代)

问题描述 投票:1回答:1

新手到python和django。我有理想开发短信营销活动。我正在使用Twilio Api,Django框架,django_twilio。我将发送大量短信介绍我的业务,​​并允许根据关键字响应订阅不同类型的优惠。我已经能够发送消息并从受访者那里提取数字。我很困惑我将如何编码这些数字并将它们存储在数据库中,以便那些想要在可查看列表中订阅一个商品的人以及想要在他们自己的可查看列表中订阅其他商品的人。我没什么经验,但到目前为止,这是我自己设法得到的。通过“可查看列表”,我打算统计每个订阅的订阅者数量,以便我可以向我的客户提出“我有这个{}许多订阅者”

views.朋友

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 OfferListing

@twilio_view
def sms_choice(request):
twilio_request = decompose(request)
contact_num = twilio_request.from_
response = twilio_request.body
resp = MessagingResponse()

if response == 'Doctor':
    OfferListing(doctor_list=contact_num)
    resp.message('Thanks for subscribing')

elif response == 'Dentist':
    OfferListing(dentist_list=contact_num)
    resp.message('Thanks for subscribing')

print(contact_num, response)
return str(resp)

models.朋友

    from django.db import models

#Available Listing


class OfferListing (models.Model):
    doctor_list = [models.BigAutoField()]
    dentist_list = [models.BigAutoField()]

    def __unicode__(self):
        return self

#Customer Numbers


class Contacts (models.Model):
    number = models.BigAutoField(primary_key=True)

    def __unicode__(self):
        return self


#Based on response add contact to Offerlistings

class Subscription (models.Model):
    number = models.ForeignKey('OfferListing',
                               on_delete=models.CASCADE,
                               related_name='number_sub')

    choice = models.ManyToManyField(OfferListing)

    def __unicode__(self):
        return self
python django
1个回答
0
投票

我建议使用3种型号:一张带有您发短信的电话号码的表格,以及您所拥有的任何信息,一张包含您提供的“列表”的表格,以及一张表格中包含外键的第三张表格。这可以根据一个人是否属于多个列表而改变。在这种情况下,您需要一个多人模型。

您不希望每个列表都有不同的模型。想象一下你的事业起飞,你必须保持500个不同的名单(医生,牙医,兽医,OBGYN,耳鼻喉科,心脏,神经等)。你不想保持这一切。相反,有一个包含所有列表的模型,然后有一个模型将电话号码与他们订阅的列表联系起来。这样,每次添加新列表时,它都是表中的一个条目,而不是模型模块中的全新类。

要检索您订阅的人员列表,您可以使用Django db API返回所有人:

ListsTable.objects.filter(listid = 1)

这将返回订阅的所有电话号码。

© www.soinside.com 2019 - 2024. All rights reserved.