用于存储用户日常活动的SQL表结构

时间:2016-06-04 13:16:59

标签: sql django database django-models

我正在使用Django构建一个诗歌阅读应用程序,并希望存储用户的日常活动。具体来说,我想存储哪个用户阅读哪首诗和什么日期。诗歌的数量也很大(数以千计)并且可能会不断增加。

我发现很难想出一个表结构来存储这些不需要手动更新的数据。将日期作为行和用户vs诗的列表作为每天的值读取是我的第一个想法,但对于大量用户来说列表会很长。

是否有任何标准结构可以处理此类案件?可以在这做什么?

1 个答案:

答案 0 :(得分:1)

假设您使用Django的内置用户模型,我会尽量保持简单:

class Poem(models.Model):
    title = models.CharField(max_length=100)
    #.. other fields


class ReadingHistory(models.Model):
    user = models.ForeignKey(User, related_name="user_reading_history")
    poem = models.ForeignKey(Poem, related_name="user_read_poems")
    date = models.DateTimeField(auto_add=True)

views.py:

def poem_reading_page(request, poem_id):
    if request.user.is_authenticated():
        poem = Poem.objects.get(pk=poem_id)

        #create reading history with this poem
        request.user.user_reading_history.create(poem=poem)

    # etc etc

虽然没有测试它