2015-08-09 3 views
0

Прежде чем начать: мое понимание Django находится на уровне новичка, и я не смог найти адекватную помощь через google.Несколько дополнительных иностранных ключей в Django

Начну с примером:

class Player(models.Model): 
    ... 


class Tournament(models.Model): 
    ... 
    first_place = models.ForeignKey(Player) 
    second_place = models.ForeignKey(...) 
    third_place = models.ForeignKey(...) 

Моей проблемы: Есть несколько людей, в первую очередь, второе место и так далее. Как я могу реализовать модель таким образом, чтобы каждый раз добавлять свое количество игроков?

Я уже пытался ManyToMany вместо ForeignKey, но потом я получаю сообщение об ошибке в меню администратора, когда я пытаюсь спасти Tournament объекта о том, что там должен быть идентификатор присутствует для объекта, даже когда я не выбраны Player сек быть добавленным.

ответ

2

Не знаю, если я понимаю вопрос правильно, но если вы хотите сделать ForeignKey с необязательным, а также хочет добавить несколько Player с, вы могли бы использовать ManyToManyField и установить null и blank, как True:

class Tournament(...): 
    ... 
    first_place = models.ManyToManyField(Player, blank=True, null=True) 
    ... 
1

Это позволит решить вашу проблему, теперь вы можете свободно добавлять каждое и любое место для каждого игрока. Функция .count() в вашем представлении может получить количество объектов для выбранных игроков. Не требуется многоголовое поле, когда вы можете просто назначить место для объекта пользователем, и каждый пользователь теперь может иметь неограниченное количество мест в каждой категории, если я понимаю, что вы пытаетесь сделать здесь. Комментарий, если вам нужна дополнительная помощь.

Class FirstPlace(models.Model): 
    first = models.ForeignKey(Player) 

Class SecondPlace(models.Model): 
    second = models.ForeignKey(Player) 

Class ThirdPlace(models.Model): 
    third = models.ForeignKey(Player)