刚从Django开始,但是我想我把我的模型布局搞砸了。我想我还没有完全理解人际关系。你知道吗
我的愿望是:
这是我的型号.py你知道吗
编辑:我修改了一下如下
from django.db import models
class User(models.Model):
username = models.CharField(max_length=30, unique=True)
password = models.CharField(max_length=100)
birthday = models.DateField('birthday')
email = models.EmailField(max_length=100)
SEX = (
('M', 'Male'),
('F', 'Female'),
)
usersex = models.CharField(max_length=1, choices=SEX)
height = models.CharField(max_length=3)
createdat = models.DateField('join date')
def __str__(self):
return "%s %s %s %s %s %s" % (self.username, self.birthday, self.email, self.usersex, self.height, self.createdat)
class UserBench(models.Model):
username = models.ForeignKey(User, related_name='bench', to_field='username')
date = models.DateField()
reps = models.IntegerField()
weight = models.IntegerField()
def __str__(self):
return "%s %s %s %s" % (self.username, self.date, self.reps, self.weight)
class UserSquat(models.Model):
username = models.ForeignKey(User, related_name='squat', to_field='username')
date = models.DateField()
reps = models.IntegerField()
weight = models.IntegerField()
def __str__(self):
return "%s %s %s %s" % (self.username, self.date, self.reps, self.weight)
class UserDeadlift(models.Model):
username = models.ForeignKey(User, related_name='deadlift', to_field='username')
date = models.DateField()
reps = models.IntegerField()
weight = models.IntegerField()
def __str__(self):
return "%s %s %s %s" % (self.username, self.date, self.reps, self.weight)
class UserStats(models.Model):
username = models.ForeignKey(User, related_name='stats', to_field='username')
date = models.DateField()
bodyweight = models.IntegerField()
def __str__(self):
return "%s %s %s %s" % (self.username, self.date, self.reps, self.weight)
是这样吗?我想我想要一个“ManyToManyField”而不是“ForeignKey”。你知道吗
或者,仔细想想,也许我应该给这个人添加外键列?这是因为每个人将有一个电梯(但在数据库中的多个条目)…所以我有点困惑。你知道吗
还有,那我的“to\ u field”呢?我想这就是我想做的,但是我不确定django是否能自动处理,我只是把事情搞砸了。你知道吗
编辑:我想我对现在如何加入数据感到困惑。你知道吗
如果我这样做了:
User.squat.all()
AttributeError: 'ForeignRelatedObjectsDescriptor' object has no attribute 'all'
如果我这样做了:
user = User.Objects.filter(username = 'name')
user.deadlift.all()
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'QuerySet' object has no attribute 'deadlift'
如果我这样做了:
* Login to admin interface
* Go to UserSquat, and click "add user"
* The username is now EVERY field from User, so for e.g. it's detecting the username as "name 1989-05-16 email@domain.com M 180 2015-11-17" (Which are the fields in User table)
所以我把自己搞糊涂了,把一切都弄坏了。再次感谢。你知道吗
你对
ForeignKey
的使用很好!要使用它们,请为每个外键字段分配一个related_name
,如下所示:这样,每当您有一个用户时,您就可以访问他们的所有深蹲对象(?)通过
user.squats.all()
。你知道吗如果由于某种原因,多个用户可以共享下蹲,则使用
ManyToManyField
。格式不变。你知道吗相关问题 更多 >
编程相关推荐