2013-02-10 2 views
1

Django noob здесь. Я строю словарь/лексикон и хочу связать синонимы слов друг с другом.Как настроить синонимы слов в моей модели?

models.py

class Word(models.Model): 
    word = models.Charfield() 

class Synonym(models.Model): 
    word_from = models.ForeignKey(Word, blank=True, null=True, related_name="word_from") 
    word_to = models.ForeignKey(Word, blank=True, null=True, related_name="word_to") 

Как получить соответствующие синонимы? Я использую generic.DetailView. Это также правильный способ установить связь между словами?

Заранее благодарен!

ответ

0

Я не понимаю, в чем цель word_from и word_to. Но самая простая модель в слово и синоним может быть достигнута с помощью одной таблицы, как:

class Word(models.Model): 
    word = models.Charfield() 
    synonym = models.ForeignKey(
     'self', null=True, blank=True, 
     related_name='synonyms') 
+0

Да, но это позволяет только один синоним, верно? –

+0

Word_from и word_to были взяты из документов: https://docs.djangoproject.com/en/1.2/ref/contrib/admin/#working-with-a-model-with-two-or-more-foreign-keys -от-то-же-родительской модели –

0

Предполагая, что слово может иметь несколько синонимов и каждый синоним также может быть синонимом других слов, вы можете использовать Джанго ManyToManyField, ссылки self.

Вот такой пример:

class Word(models.Model): 
    word = models.CharField(...) 
    synonyms = models.ManyToManyField("self") 
+0

Спасибо, я не знал о самооценке. Но в admin теперь я не могу добавить еще один синоним, только один. Есть идеи? –

Смежные вопросы