首页 > 解决方案 > 是否应该在单独的 BooleanField 中跟踪重要指标,还是 CharField 就足够了?

问题描述

我想跟踪我的应用程序中消息的统计信息。一个重要的指标是“初始消息”,因为这意味着新的对话开始了。将初始消息作为单独的 BooleanField 是否更好,或者将“初始消息”作为消息类别 CharField 中的字符串进行跟踪是否足够。

请说明您是推荐模型 A、模型 B 还是其他方法,以及为什么。

我想使用这个模型来为我在应用程序的用户仪表板中显示的图表提供动力。

# Model A
class Data(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    message = models.CharField(max_length=20)
    message_channel= models.CharField(max_length=20) #Facebook, Twitter, SMS
    message_category = models.CharField(max_length=20) #initial message, reply, feedback_reply
    initial_message = models.BooleanField()
    created_at = models.DateTimeField(auto_now_add=True)

# Model B
class Data(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    message = models.CharField(max_length=20)
    message_channel= models.CharField(max_length=20) #Facebook, Twitter, SMS
    message_category = models.CharField(max_length=20) #initial message, reply, feedback reply
    created_at = models.DateTimeField(auto_now_add=True)

标签: djangodjango-models

解决方案


在数据库规范化方面,如果您将有关消息的信息存储在表中,正确的方法是您的消息表和消息类别表之间有一个外键,那么您只需要创建一个带有“类别表中的“初始消息”(模型 B)


推荐阅读