簡體   English   中英

如何為以下要求創建 model

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM