如何建立Django模型来存储Twitter对话?

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

我正在构建一个工具,该工具可以获取用户时间轴推文及其响应,我需要找出如何将这些对话存储在数据库中,然后再将其呈现在模板中。

[要进行对话,我使用while循环,该循环获取一条tweet的'in_reply_to_status_id',然后通过id检索此回复的状态对象,找到其'in_reply_to_status_id'等,直到检索到整个对话为止。

这是我使用的代码:

conversation = []

while True:

    response = api.get_status(id=tweet_id, tweet_mode='extended')._json

    if response['in_reply_to_status_id'] == None:
        break
    else:
        message_dict = {}
        message_dict['author'] = response['user']['screen_name']
        message_dict['text'] = response['full_text']
        message_dict['created_at'] = response['created_at']
        message_dict['author_profile_url'] = response['user']['profile_image_url']
        conversation.append(message_dict)
        tweet_id = response['in_reply_to_status_id']

if len(conversation) == 0:
    return None

return reversed(conversation)

在我的models.py中,我有一个Tweet模型,我需要了解如何制作一个模型来存储上面脚本检索到的整个对话/对话/线程。另外,以后应该可以将对话呈现为简单的聊天对话。

[我的最初想法是在我的Tweet模型中添加“回复”字段,并将对话存储为JSON,但这对我来说似乎不是正确的解决方案。

django python-3.x twitter tweepy
1个回答
0
投票

我不知道您要获取或要存储的所有字段,但是对于您在代码中看到的内容,它应该可以工作(将max_length设置为应该执行的操作,我不知道):

Tweet(models.Model):
    author = models.Charfield(max_length=50)
    text = models.Charfield(max_length=500)
    author_profile_url = models.URLField(null=True, blank=True)
    reply_to = models.ForeignKey(Tweet, on_delete=models.CASCADE, related_name='replies')
    creation_date = models.DateTimeField()

要打印所有对话,您需要迭代FK以查找所有相关对象,并在creation_date之前对它们进行排序。

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