[英]how to create a model for following requirements
我有配置文件model,它有多個領域,如傳球、接球、射門。 然后每個字段都有 4 個部分,例如(右、左、上、下)。 如何為每個字段存儲 4 個不同的值。
根據您的要求,您可以使用具有不同值的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)
聽起來您所描述的實際上是幾個相關的模型。 如果沒有這些數據所代表的全部細節,我不得不猜測這些模型最合適的名稱——但假設“通過”、“接收”等是技能,而你正在衡量人們在這些類別中的技能水平. 然后,技能列表將屬於“技能”model - 即,如果您有 10 種不同的技能,那么這將是一個包含 10 個條目的表格,每個技能對應一個條目。 然后,每當您存儲一個人的結果時,您都會將其存儲為一組鏈接記錄:Person model 中的一個條目,以及涵蓋所有技能所需的盡可能多的 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
人員技能等級:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.