我创建了两个模板,我有扩展模板 De 用户 (AbsctractUser) 和带有字段 total_score 的模板 (Score)。
从我对带有redis的django缓存的理解来看,只要不修改该行,redis就会将信息保存在缓存中。
total_score 字段将定期更新,例如每 10 分钟 100 次,如果添加到 AbstractUser 模板中,这将强制 redis 在每次页面更改(视图)时定期更新用户的缓存,而如果我创建第二个 Score 模板使用 OnetoOne 关系,该关系将仅在相关的 2 个页面上更新,或者视图加载 Score 模型。
或者我可以直接将字段 total_score 放在我的抽象用户中并定期更新。但对我来说,我失去了抽象用户模型的 redis 效率。我想知道我的推理是否正确...
我能读到的是,OnetoOne 对于扩展已经存在的表很有用,但是对于创建新项目,必须避免 OnetoOne,并直接在模型中添加字段。所以我一头雾水。先感谢您。
例子 :
更适合 redis 缓存 (score_user) 更新行 score_user 的频繁更新:
class User(AbstractUser):
name = CharField(_("Last name of User"), blank=True, max_length=255)
forename = CharField(_("First name of User"), blank=True, max_length=255)
class Score(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True)
score_user = models.PositiveIntegerField(default=0)
VS
class User(AbstractUser):
name = CharField(_("Last name of User"), blank=True, max_length=255)
forename = CharField(_("First name of User"), blank=True, max_length=255)
score_user = models.PositiveIntegerField(default=0)