Я сомневаюсь, что вам нужен ForeignKey
здесь, во-первых, так как это будет означать, что WordCoreModel
имеет ноль или один homonym
с, ноль или один synonym
с, ноль или один antonym
s в одном направлении, а многие в другом.
Вы, вероятно, захотите использовать здесь ManyToManyField
[Django-doc] .Это означает, что слово может иметь несколько омонимов, синонимов и антонимов, например:
class WordCoreModel(models.Model, BaseModel):
word_core = models.CharField(max_length=255, default='', db_index=True)
word_russian_typed = models.CharField(max_length=255, default='', blank=True)
word_english_typed = models.CharField(max_length=255, default='', blank=True)
homonyms = models<b>.ManyToManyField('self')</b>
synonyms = models<b>.ManyToManyField('self')</b>
antonyms = models<b>.ManyToManyField('self')</b>
class Meta:
verbose_name = 'Core Word'
verbose_name_plural = 'Core Words'
def __str__(self):
return self.word_core
По умолчанию ManyToManyField
, который ссылается на себя, является симметричным .Это означает, что если a
является синонимом b
, то b
является синонимом a
.Это также означает, что вам не нужно related_names
здесь: в отношении нет направления, поэтому WordCoreModel
имеет только отношения с именами homonyms
, synonyms
и antonyms
.