Я знаю, вопросы такого рода задавались по крайней мере несколько раз здесь, но я вроде как начинаю с django, и мне сложно найти решения из похожих вопросов и просто поместить это вместе.Модель Django с отношениями
Я думаю, что моя модель должна иметь 3 classess:
class Guild(models.Model):
name = models.CharField(max_length=50)
class Battle(models.Model):
guild1 = models.ForeignKey(Guild, related_name="guild_one")
guild2 = models.ForeignKey(Guild, related_name="guild_two")
# tournament = models.ForeignKey(Tournament) ???
class Tournament(models.Model):
name = models.CharField(max_length=50)
????
Battle
является война между двумя Guilds
и происходит во время Tournament
. Может быть много Battles
в Tournament
. A Guild
может участвовать в нескольких Tournaments
.
Я хочу, чтобы у вас была возможность найти гильдию (чтобы увидеть каждую битву за них, с каждого турнира, в котором они приняли участие), Турниром, чтобы узнать, какие битвы были разыграны, плюс я хотел бы получить доступ через Турнир чтобы увидеть, какие гильдии когда-либо участвовали. Будет ли вышеприведенный код (плюс строка, которую я заработал) работать, потому что мне кажется, что, возможно, в турнирном классе должна быть ссылка на битву?
Кроме того, если вы могли бы привести пример запроса, который будет содержать имена всех Гильдий, которые участвовали в данном турнире.
Очень гладкий, спасибо! Я также пытаюсь получить имена всех Гильдий, которые когда-либо сражались с конкретной Гильдией. Другими словами, все противники Гильдии и самой Гильдии. Я закодировал это, но вместо имен я получил только идентификаторы Гильдии: 'Battle.objects.filter (Q (guild1 = g) | Q (guild2 = g)). Values_list ('guild1', 'guild2'). Distinct()' , Могли бы вы сделать предложение, пожалуйста? – nutship