【发布时间】:2021-05-18 16:27:06
【问题描述】:
我有个人资料模型,它有多个领域,如传球、接球、射门。然后每个字段都有 4 个部分,例如(右、左、上、下)。如何为每个字段存储 4 个不同的值。
【问题讨论】:
标签: python django django-models django-views wagtail
我有个人资料模型,它有多个领域,如传球、接球、射门。然后每个字段都有 4 个部分,例如(右、左、上、下)。如何为每个字段存储 4 个不同的值。
【问题讨论】:
标签: python django django-models django-views wagtail
听起来您所描述的实际上是几个相关的模型。如果没有这些数据所代表的全部细节,我不得不猜测这些模型最合适的名称——但假设“通过”、“接收”等是技能,而你正在衡量人们在这些类别中的技能水平.然后,技能列表将属于“技能”模型 - 即,如果您有 10 种不同的技能,那么这将是一个包含 10 个条目的表格,每个技能对应一个条目。然后,每当您存储一个人的结果时,您都会将其存储为一组链接记录:Person 模型中的一个条目,以及涵盖所有技能所需的尽可能多的 PersonSkillLevel 记录。您的模型将如下所示:
class Skill(models.Model):
name = models.CharField(max_length=255)
class Person(models.Model):
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
class PersonSkillLevel(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
skill = models.ForeignKey(Skill, on_delete=models.CASCADE)
right = models.IntegerField()
left = models.IntegerField()
top = models.IntegerField()
bottom = models.IntegerField()
其中存储的数据类似于:
技能:
id | name
---------------
1 | Passing
2 | Receiving
3 | Shooting
人:
id | first_name | last_name
---------------------------
1 | Bobson | Dugnutt
2 | Todd | Bonzalez
PersonSkillLevel:
id | person | skill | right | left | top | bottom
1 | 1 | 1 | 12 | 23 | 24 | 31 <- Bobson Dugnutt's scores for Passing
2 | 1 | 2 | 13 | 15 | 21 | 17 <- Bobson Dugnutt's scores for Receiving
3 | 2 | 1 | 25 | 14 | 20 | 12 <- Todd Bonzalez's scores for Passing
4 | 2 | 2 | 16 | 22 | 15 | 24 <- Todd Bonzalez's scores for Receiving
【讨论】:
根据您的要求,您可以使用 CharField 和不同的值作为选择。
例如:
class Profile(models.Model):
MY_CHOICES = (
('R', 'Right'),
('L', 'Left'),
('T', 'Top'),
('B', 'Bottom')
)
passing = models.CharField(max_length=1, choices=MY_CHOICES, default='R', blank=True)
receiving = models.CharField(max_length=1, choices=MY_CHOICES, default='R', blank=True)
shooting = models.CharField(max_length=1, choices=MY_CHOICES, default='R', blank=True)
【讨论】: