Я совершенно не знаком ни с Python, ни с Django, поэтому, пожалуйста, извините меня, если этот вопрос немного простак.Django ModelForm или Form
Я пишу небольшое приложение, чтобы отслеживать множество бильярдных матчей. Мне не нужно объяснять все детали, но основными объектами являются:
У команды нет игроков Матч между двумя командами (домашний и дальний) В матче есть коллекция игр. Каждая игра находится между двумя игроками (по одному от каждой команды), за исключением игроков, которые уже сыграли в матче.
я сделал следующие модели:
class Team(models.Model):
team_id = models.IntegerField(unique=True, max_length=5, blank=False,validators=[validate_five_digits])
name = models.CharField(max_length=50, blank=False, null=False)
class Player(models.Model):
id = models.IntegerField(unique=True, max_length=5, blank=False,validators=[validate_five_digits])
team = models.ForeignKey(Team, blank=True, null=True)
first_name = models.CharField(max_length=50, blank=False, null=False)
last_name = models.CharField(max_length=50, blank=False, null=False)
alias_name = models.CharField(max_length=50, blank=True, null=True)
current_handicap = models.IntegerField()
class Match(models.Model):
date = models.DateField(blank=False, null=False)
location = models.CharField(max_length=255, blank=True, null=True)
table_size = models.CharField(max_length=50, blank=True, null=True)
home_team = models.ForeignKey(Team, related_name='home_team', blank=True, null=True)
away_team = models.ForeignKey(Team, related_name='away_team', blank=True, null=True)
class Game(models.Model):
match = models.ForeignKey(Match, blank=False, null=False)
match_sequence = models.IntegerField(blank=True, null=True)
player1 = models.ForeignKey(Player,related_name='player1', blank=False, null=False)
player2 = models.ForeignKey(Player,related_name='player2', blank=False, null=False)
player1_handicap = models.IntegerField(null=True, blank=True)
player2_handicap = models.IntegerField(null=True, blank=True)
Я успешно сделал просмотров и ModelForms для добавления/редактирования Команды, игроки и матчи. Список совпадений отображается в таблице с 1 совпадением за строку .... и теперь я хочу добавить кнопку для добавления новой игры.
Мой план сделать это за счет того, кнопки перейти к URL, который выглядит следующим образом:
game/new/?match_id=1 (or something like that)
Теперь для той части, где я запутался ..... Когда вы идете, чтобы добавить новый я хочу отобразить 3 поля выбора и только 3 поля выбора. Поле First Choice должно отображать игроков из Home Team, которые еще не сыграли в этом матче В поле Second Choice должны отображаться игроки из команды Away Team, которые еще не сыграли в матче Third Choice Field имеет только два варианта (Домой и в гостях) .... и будет указывать, какой игрок будет стрелять первым.
Затем, когда пользователь нажимает кнопку «Отправить», необходимо создать объект Game() с match_id из строки запроса, следующий порядковый номер для соответствия и Player1 = домашний или удаленный игрок на основе поля 3-го выбора.
Я полностью смущен о том, как это должно быть сделано. Должен ли я использовать формы. Форм или модель?
Любые предложения или скелетный код, чтобы понять меня?
Заранее спасибо за помощь с таким вопросом новичка!
Пол
Я бы взял 'ModelForm' в любой день' Form' – karthikr