/ / про множинні відносини в django.models? noob тут - django, django-моделі

про декілька відносин у django.models? Нуб тут - джанго, джанго-моделі

це мій models.py

from django.db import models

# Create your models here.

class Leagues(models.Model):
LeagueName = models.CharField(max_length=200)

class Team(models.Model):
TeamName = models.CharField(max_length=200)

class LeagueTable(models.Model):
league = models.ForeignKey(Leagues)
team = models.CharField(max_length=200)
matches_played = models.IntegerField()
matches_won = models.IntegerField()
matches_drawn = models.IntegerField()
matches_lost = models.IntegerField()
points = models.IntegerField()

class FixtureTable(models.Model):
league = models.ForeignKey(Leagues)
fixture_date = models.DateField("Fixture Date")
team_one = models.CharField(max_length=200)
team_one_score = models.IntegerField()
team_two = models.CharField(max_length=200)
team_two_score = models.IntegerField()

у "клас FixtureTable" я хочу, щоб team_one та team_two були пов'язані з двома різними командами у моделях "Team Team". як створити декілька відносин, чи це можливо

PS: це суто ноб, з невеликим досвідом програмування, але ніякого досвіду роботи ні з python, ні з базами даних.

Дякую.

Відповіді:

1 для відповіді № 1

Ви можете створити стільки іноземних ключів для тієї самої моделі. Я підозрюю, що "відштовхує вас" - це Джанго, який дає вам помилку, кажучи, що вам потрібно вказати пов'язане ім'я.

За замовчуванням Django створює атрибут на протилежній моделі форми <model>_set. Тож у наступному сценарії:

class FixtureTable(models.Model):
team_one = models.ForeignKey(Team)

Джанго додав би відповідного менеджера Team як fixturetable_set. Якщо ви тоді зробили:

class FixtureTable(models.Model):
team_one = models.ForeignKey(Team)
team_two = models.ForeignKey(Team)

Джанго намагатиметься додати той же атрибут двічі і, очевидно, не вдається. Виправлення полягає у визначенні a related_name, тому кожен може мати унікального пов'язаного менеджера:

class FixtureTable(models.Model):
team_one = models.ForeignKey(Team, related_name="team_one_fixturetables")
team_two = models.ForeignKey(Team, related_name="team_two_fixturetables")

Тоді все буде добре. Ви можете вказати, що вам подобається related_name до тих пір, поки це унікально для моделі.