це мій 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
до тих пір, поки це унікально для моделі.