存储自定义值而不是foreignkey的最佳实践?

时间:2016-02-08 10:53:24

标签: python django database django-models

情况很简单。

class EventType(models.Model):
    name = models.CharField()

class Event(models.Model):
    ...
    event_type = models.ForeignKey('EventType')

需要有机会在event_type中输入自定义 CharFieldEventType类是分开的原因是该字段上将有大量的查找。而且,对于ForeignKey条目(不是自定义值),查找将

总结一下:存储自定义event_type是否有更好的解决方案,而不是声明一个aditional字段custom_event_type = models.CharField()

1 个答案:

答案 0 :(得分:3)

您仍然可以使用相同型号保存所有事件类型,但使用其他字段来判断您是否要在搜索结果中包含EventType

class EventType(models.Model):
    name = models.CharField()
    include_in_search = models.BooleanField()

class Event(models.Model):
    ...
    event_type = models.ForeignKey('EventType')

如果您创建的数据库索引按include_in_search排序,然后按name排序,我打赌您确实不会注意到查找时间的任何差异。

您没有编写所需的所有规范,但您可能希望将name字段设置为唯一,或者甚至将其用作主键。