【发布时间】:2021-11-03 07:54:24
【问题描述】:
我正在为一个游戏设计一个基于 Django 的网络界面,该游戏既可以单人玩,也可以作为团队玩。游戏是基于积分的;达到设定点数的第一方获胜。为了以后的统计和显示,点有一个时间戳。
我的问题:如何将两个Players 或两个Teams 合为一个Game?我的模型现在看起来像这样:
from django.db import models
# Create your models here.
class Player(models.Model):
slug = models.SlugField(unique=True) # will be autogenerated when inserting new Instance
name = models.CharField(max_length=100)
wins = models.IntegerField()
losses = models.IntegerField()
picture = models.ImageField(upload_to='images/player_pics')
# games_played = wins + losses
def __str__(self):
return self.name
class Team(models.Model):
slug = models.SlugField(unique=True)
name = models.CharField(max_length=100)
players = models.ManyToManyField(Player)
wins = models.IntegerField() # from here on seems redundant to Player class
losses = models.IntegerField()
picture = models.ImageField(upload_to='images/team_pics')
# games_played = wins + losses
def __str__(self):
return self.name
class Point(models.Model):
val = models.IntegerField()
timestamp = models.DateTimeField()
class Game(models.Model):
slug = models.SlugField(unique=True)
timestamp = models.DateTimeField()
players = models.ManyToManyField(Player) # here should be either Team or Player
points = models.ManyToManyField(Point)
我的想法是实现另一个类,例如 GameParty,它可以是 Player 或 Team,但同样的问题也适用。胜负之类的冗余字段也是我不喜欢的。
【问题讨论】:
标签: python django sqlite django-models