只是想知道将多个外键保存到单个Char字段是否有用,以避免多个DB调用保存并维护OnetoOne关系。情况就是这样。
人物模型
class Person(models.Model):
first_name = models.CharField(max_length=20, null=False, blank=False)
first_name = models.CharField(max_length=20, null=False, blank=False)
.....
.....
.....
二级学位模型
class SecondaryDegree(models.Model):
name = models.CharField(max_length=100, null=False, blank=False)
具有OnetoOne关系的人员中学学位
class PersonSecondaryDegree(models.Model):
nomination_profile = models.OneToOneField('Person',null=False, blank=False)
# Here i am using CharField instead of ForiegnKey.
secondary_degree = models.CharField(max_length=255, null=False, blank=False)
is_deleted = models.BooleanField(default=False)
last_modified = models.DateTimeField(auto_now_add=True,null=False,blank=False)
答案 0 :(得分:2)
我不建议使用CharField
来存储外键ID。它将阻止您对简单操作使用标准SQL查询,从而阻止您使用Django ORM中的相关功能。
通常最好为数据库提供一个逻辑结构,而不是为性能做出结构牺牲。还有许多其他方法可以提高性能,例如索引和缓存。如果您这样做,它将为您提供最大的灵活性。