我有一个模型用户和一个模型团队。 我经常使用Team的所有字段和User的一个字段(用户名)但不总是!
一个团队包含许多用户,对于这些关系,我创建了这个模型(1):
class joinTeam(models.Model):
username_user=models.CharField(max_length=30)
team = models.ForeignKey(Projet, null=False)
但我犹豫是否要更换此字段' username_user'由此(2):
class joinTeam(models.Model):
username_user=models.ForeignKey(User, null=False)
team = models.ForeignKey(Projet, null=False)
I'm afraid that this model (2) consumes more capacity the the first (1).
如何使用简单的CharField或ForeignKey?
答案 0 :(得分:0)
我担心这个型号(2)在第一次消耗更多的容量 (1)。
不要害怕,django只会将一个引用(指针/ id)存储给用户,而不是整个模型实例。
你的模型应该是这样的:
class joinTeam(models.Model):
user=models.ForeignKey(User, null=False)
team = models.ForeignKey(Projet, null=False)
将username_user
重命名为user
。
另外,最佳做法是尝试不重复数据,如果将username
存储在joinTeam table
中,则表示您正在复制数据,因为您可以从user table
获取数据。
答案 1 :(得分:0)
首选使用样本2,使用foreingKeys。
最佳做法,将user_name_user重命名为user 默认情况下,null = False,但如果您愿意,可以显式
class joinTeam(models.Model):
user = models.ForeignKey(User)
team = models.ForeignKey(Projet)
在进行查询时,只需使用select_related,您就会在数据库中点击。
joinTeam.objects.all().select_related('user')