Я получаю эту ошибку:
ERRORS:
pokollector.CustomPokemon.poke_id: (models.E006) The field 'poke_id' clashes with the field 'poke_id' from model 'pokollector.pokemon'.
Вот соответствующий код:
class Pokemon(models.Model):
poke_name = models.CharField(max_length=30)
poke_type = models.ManyToManyField(PokeType)
evolves_from = False
evolves_into = False
gen_added = models.PositiveIntegerField(validators=[min(1), max(gen)])
class Meta:
verbose_name_plural = 'Pokemon'
def __str__(self):
return self.poke_name
class CustomPokemon(Pokemon):
#Add name and level for user's specific Pokemon
poke_id = models.ForeignKey(Pokemon, on_delete=models.CASCADE,
related_name='poke_id', verbose_name='Pokemon ID')
name = models.CharField(max_length=30, blank=True)
level = models.PositiveIntegerField(blank=True, null=True)
#add owner attr
class Meta:
verbose_name_plural = 'Custom Pokemon'
def save(self):
if not self.name:
self.name = self.poke_name
super().save()
def __str__(self):
return self.name
Как видите, у меня две модели, одна из которых наследуется от другой. . Рассматриваемая ошибка относится к полю poke_id
в CustomPokemon
. Я подумал, что это может быть какой-то странный конфликт, вызванный наследованием, но если я изменю имя поля на pokemon_id
, проблема будет решена.
Хотя такой обходной путь запускает мой код, мне любопытно, что основной принцип здесь; Почему после добавления этих трех букв выполняется один и тот же код?