Как использовать Django для управления свободными пространствами в группе пользователей? - PullRequest
1 голос
/ 20 августа 2010

У меня есть следующий (урезанный) код:

# games/models.py
side_choices = [('A', 'Attack'), ('D', 'Defense')]
position_choices = [(0, 'Commander'), (1, 'Knight'), (2, 'Mage'), (3, 'Healer')]
class Game(models.Model):
    users = models.ManyToManyField(User, through='GameParticipation)) // User is Django's user


class GameParticipation(models.Model):
    user = models.ForeignKey(User)
    game = models.ForeignKey(Game)
    side = models.CharField(choices=side_choices)
    position = models.PositiveSmallIntegerField(choices=position_choices)

# games/forms.py
class JoinForm(forms.Form):
    side = forms.ChoiceField(choices=side_choices)
    position = forms.ChoiceField(choices=position_choices)        

И я понятия не имею, как мне написать код, чтобы получить список свободных мест в игре и передать егоJoinForm, чтобы пользователи не видели опции для занятого места.

1 Ответ

0 голосов
/ 20 августа 2010

Здесь нужна дополнительная информация, но, если вы знаете, что в базе данных есть только те места, которые заняты, возможно, вы сможете найти свободные.

#assuming you know the game and user
game=1
user=2

#get all used spaces
usedSpaces=GameParticipation.objects.filter(game__get=game).filter(user__get=user)
#figure out from size of board, which spaces are empty

или если вы знаете, что пустые пространства имеют нулевые значения

emptySpaces=GameParticipation.objects.filter(game__get=game).filter(user__get=user).filter(position__exact=None)
...