我正在django网站上工作,我需要存储一些关于用户的信息,例如isVerified
BooleanField和ImageField中的个人资料图片以及存储用户给出的评分的评分elements
。所以我做了一个这样的模型:
class UserProfile(AbstractBaseUser):
is_verified = models.BooleanField(default=True)
current_profile = models.ImageField(default=static('img/default_profile.jpg'))
ratings = models.ManyToManyField(Element, on_delete=models.CASCADE)
但是我想更多地保存这些评级(例如时间戳和用户评分的实际值)
我是否需要为此制作一个单独的模型,还是可以更好地实现这一目标?
答案 0 :(得分:1)
您需要使用可通过through
关键字指定的中间表。
例如:
class UserProfile(AbstractBaseUser):
is_verified = models.BooleanField(default=True)
current_profile = models.ImageField(default=static('img/default_profile.jpg'))
ratings = models.ManyToManyField(Element, on_delete=models.CASCADE, through='UserProfileElement')
class UserProfileElement(models.Model):
user = models.ForeignKey(UserProfile, models.CASCADE, verbose_name=_('User'))
element = models.ForeignKey(Element, models.CASCADE, verbose_name=_('Element'))
timestamp = models.DateTimeField(_('Timestamp'), auto_now_add=True)
rating = models.PositiveIntegerField(_('Rating'))
class Meta:
unique_together = ('user', 'element')