Я новичок в Django (использую версию: 2.1.5) (Python 3.6) и пытаюсь возиться с некоторыми моделями.Я строю шахматную базу данных.Это зависит от 3 моделей, игроков, игры и ходов, составляющих игру.Для каждой игры есть белый игрок и черный игрок, оба из класса игрока.Это вызывает ошибку:
<'class 'chessengine.admin.GameInline'>: (admin.E202) 'chessengine.Game' has more than one ForeignKey to 'chessengine.Player'.
Я попытался использовать имена ссылок, которые удалили ранее связанную ошибку, но не будут иметь дело с вышеупомянутой.
//models.py
class Player(models.Model):
name = models.CharField(max_length=200)
birth_date = models.DateField('birthday')
def game_count(self):
return Player.objects.filter(Games__white_player=self.name).count() + Player.objects.filter(Games__black_player=self.name).count()
class Game(models.Model):
number = models.IntegerField()
date = models.DateField('date played')
moves = models.IntegerField()
white_player = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='white_player')
black_player = models.ForeignKey(Player, on_delete=models.CASCADE, related_name='black_player')
result = models.CharField(max_length=8)
//admin.py
class GameInline(admin.TabularInline):
inlines = [MoveInline]
model = Game
class PlayerAdmin(admin.ModelAdmin):
fieldsets = [
('Player Information', {'fields': ['name', 'birth_date']}),
('Game Information', {'fields': ['date', 'player_white', 'player_black', 'result'], 'classes': ['collapse']}),
]
inlines = [GameInline]
list_display = ('name', 'birth_date', 'game_count')
list_filter = ['name']