Django,射箭系统

Django, Archery System

这更像是一个指导请求,而不是任何硬编码示例。 我给自己定了一个问题,要用 Django 写一个射箭记录系统。 我的记录系统运行良好,系统可以注册用户、记录他们的分数、显示他们按回合过滤的分数、显示射击特定回合的用户分数等。 我遇到的这个问题是关于class确定分数的。 我来解释一下:

圆形 |第三 Class |第二 Class |第一 Class |鲍曼 |鲍曼大师 |弓箭大师
York     283      511      698       913       1065            1146

在这种情况下,class化 returned 将是第二个 Class。 table 的范围很广,因为初级女士可以打同一轮,但要达到类似的 class 化,她们需要的分数会有所不同。

我的问题是这种查找可以在 django 中完成吗?

我有一个 Scores table,它收集回合的名称和该回合的最高得分以及弓箭手射击的组。我创建了一个索引来唯一标识这些变量作为绅士射击约克只能有一个 class 化集。我想做的是查找适当的 classification table 和 return classification 值并将其存储在回合得分记录中。

这是我的分数模型: class得分(models.Model):

BOW_TYPE = (
    ('R', 'Recurve',),
    ('C', 'Compound',),
    ('L', 'Longbow',),
)
archer = models.ForeignKey('User', related_name='scores', on_delete=models.CASCADE)
rndname = models.ForeignKey('Round', related_name='round', verbose_name=("Round Name"), on_delete=models.CASCADE)
shootingas = models.ForeignKey('Age', related_name='shootingas', verbose_name='Shooting as', on_delete=models.CASCADE)
bowtype = models.CharField(max_length=1, verbose_name=("Bow Type"), choices=BOW_TYPE)
score = models.IntegerField(default='')
dateshot = models.DateField(verbose_name="Date Round Shot", default=timezone.now)
created_date = models.DateTimeField(default=timezone.now)
classindex = models.CharField(max_length =5, default='')

def index(self):
    return str(self.shootingas_id) + str(self.rndname_id) + str(self.bowtype)
index = property(index)

def save(self, *args, **kwargs):
   self.classindex = self.index  
   super(Score, self).save(*args, **kwargs)  

def __str__(self):
    return str(self.archer) + ' | ' + str(self.score) + ' | ' + str(self.rndname) + ' | ' + str(self.created_date) + ' | ' + str(self.classindex)

Class化 table 看起来像这样:

class Classification(models.Model):
shootingas = models.ForeignKey('Age', related_name='shooting', on_delete=models.CASCADE)
roundname = models.ForeignKey('Round', related_name='rounds', on_delete=models.CASCADE)
bowtype = models.ForeignKey("BowType", verbose_name='bows', default=1, on_delete=models.CASCADE)
third = models.IntegerField(default='', verbose_name="3rd Class Bowman", null=True, blank=True)
second = models.IntegerField(default='', verbose_name="2nd Class Bowman",  null=True, blank=True)
first = models.IntegerField(default='', verbose_name="1st Class Bowman",  null=True, blank=True)
BM = models.IntegerField(default='', verbose_name="Bowman",  null=True, blank=True)
MB = models.IntegerField(default='', verbose_name="Master Bowman",  null=True, blank=True)
GMB = models.IntegerField(default='', verbose_name="Grand Master Bowman",  null=True, blank=True)
classindex = models.CharField(max_length=5)

def index(self):
    return str(self.shootingas_id) + str(self.roundname_id) + str(self.bowtype.id)
index = property(index) 

def save(self, *args, **kwargs):
   self.classindex = self.index  
   super(Classification, self).save(*args, **kwargs)   

def __str__(self):
    return str(self.index)

我需要一种在 table 中使用 class 索引作为 link 的方法,以便可以将分数与 Class 中的值进行比较ification table 和相应的 classification 值,第三,第二等,可以 return 进入分数 table

我意识到这有点令人费解,但我真的很想得到一些关于我可以从哪里开始寻找解决方法的指示。

如果您需要任何其他信息,请告诉我。

谢谢

这在 Django 中是可能的。似乎您正在寻求一种存储这些独特计分表的好方法,以便与弓箭手的分数进行比较。否则,如果逻辑足够,你当然可以class将弓箭手和分数确定为某个class。

Django 模型是 SQL 字段的表示。这是存储评分表的好方法,但是在存储数据方面您有很多选择。