2010-08-20 4 views
1

У меня есть следующий (усеченный) код:Как использовать Django для управления свободными пространствами в группе пользователей?

# 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 так что пользователи не видят параметры для выбранного пространства.

ответ

0

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

#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) 
+0

Каждое пространство принимается другим пользователем. –

+0

У меня есть информация: игра и пользователь, который хочет присоединиться, и пробелы, которые принимаются. –

+0

Знаете ли вы, сколько пробелов есть? если вы знаете только пробелы, а не размер доски, тогда вы не можете найти пустые пробелы в пробелах – JiminyCricket

Смежные вопросы