Модель Джанго связана с двумя другими моделями.

Я пытаюсь создать приложение-словарь и испытываю трудности с моделью.

Теперь я написал это

class Term(models.Model):
    term_text   = models.CharField("phrase term text", max_length=100)

class Definition(models.Model): 
    term                    = models.ForeignKey(Term)
    definition_text         = models.TextField()


class Country(models.Model):
        #is this correct method?
        #Should i add ForeginKey for both Term and Definition here?

Проблема в Стране. И термин, и определение должны иметь поле «Страна», так как термин может быть доступен во многих странах, а определение может быть ограничено определенными странами, а другое определение — другими.

теперь, как сделать эту модель страны?

Я пытался использовать django-country в качестве модельного поля для терминов и определений, но это ограничивало меня использованием только 1 страны для каждого объекта.


person EzzatA    schedule 11.11.2014    source источник
comment
Вы можете добавить внешний ключ страны в термин и определение, тогда у вас может быть отношение «один ко многим», если один термин или определение может иметь много стран.   -  person Tanveer Alam    schedule 11.11.2014
comment
Разве не наоборот? добавление внешних ключей как термина, так и определения, чтобы получить один ко многим? @TanveerAlam   -  person EzzatA    schedule 11.11.2014


Ответы (1)


Что вам нужно, так это отношения ManyToMany как для термина, так и для определения. Таким образом, вы сможете звонить my_term.countries и my_definition.countries.

class Term(models.Model):
    term_text = models.CharField("phrase term text", max_length=100)
    country = models.ManyToManyField(Country)


class Definition(models.Model): 
    term = models.ForeignKey(Term)
    definition_text = models.TextField()
    country = models.ManyToManyField(Country)


class Country(models.Model):
    # define Country model

    class Meta:
        verbose_name_plural = "countries"
person Dayne Jones    schedule 11.11.2014