我需要为简单的Django应用创建模型的帮助。
该应用程序的目的是让用户(裁判员)注册比赛,然后管理员将从已注册的给定比赛列表中选择2个用户(裁判员)。现在,我的Matches模型如下所示:
class Match(models.Model):
match_number = models.CharField(
max_length=10
)
home_team = models.ForeignKey(
Team,
on_delete=models.SET_NULL,
null=True,
related_name='home_team'
)
away_team = models.ForeignKey(
Team,
on_delete=models.SET_NULL,
null=True,
related_name='away_team'
)
match_category = models.ForeignKey(
MatchCategory,
on_delete=models.SET_NULL,
null=True
)
date_time = models.DateTimeField(
default=timezone.now
)
notes = models.TextField(
max_length=1000,
blank=True
)
我想做的是创建一个名为MatchRegister的新模型,我将在其中保存match_id和user_id,如下所示:
class MatchRegister(models.Model):
match_id = models.ForeignKey(
Match
)
user_id = models.ForeignKey(
Users
)
然后,管理员将拥有给定匹配项的已注册用户列表,他将从中选择两个,因此我想像这样修改我的匹配模型(添加两个新字段):
class Match(models.Model):
match_number = models.CharField(
max_length=10
)
home_team = models.ForeignKey(
Team,
on_delete=models.SET_NULL,
null=True,
related_name='home_team'
)
away_team = models.ForeignKey(
Team,
on_delete=models.SET_NULL,
null=True,
related_name='away_team'
)
match_category = models.ForeignKey(
MatchCategory,
on_delete=models.SET_NULL,
null=True
)
date_time = models.DateTimeField(
default=timezone.now
)
notes = models.TextField(
max_length=1000,
blank=True
)
ref_a = models.ForeignKey(
Users,
on_delete=models.SET_NULL,
null=True,
related_name='ref_a'
)
ref_b = models.ForeignKey(
Users,
on_delete=models.SET_NULL,
null=True,
related_name='ref_b'
)
这是我的解决方案,但我不知道它是否以正确的方式完成,因此我想向您寻求帮助。
答案 0 :(得分:1)
如果您确定某场比赛只有两个裁判,那么您提出的建议就可以了。但是,如果将来有机会更改数字(只有一个或三个),则可以在中间表中添加一个标志:
arr.astype('datetime64[D]') - arr.astype('datetime64[M]') + 1
# array([31, 31, 31], dtype='timedelta64[D]')
您将需要业务逻辑来将“选择的”引用的数量限制为预期的数量。通过此选项,可以轻松增加或减少引用数量,而无需添加或删除列(只需更改业务逻辑)。