Что такое обратный иностранный ключ и обычный иностранный ключ

Это вопрос от новичка в Django, мой вопрос звучит следующим образом;

Чем отличается обычный foreignkey от обратного отношения и в чем разница. Я всегда думал;

метод 1

class State(models.Model):
    name = models.CharField()

class Country(models.Model):
    name = models.CharField()
    state = models.ForeignKey(State) # normal foreignkey

метод 2

class Country(models.Model):
    name = models.CharField()

class State(models.Model):
    name = models.ForeignKey(Country) # reverse relation

В чем основная разница и в чем преимущество, когда использовать и как использовать, особенно если я хочу использовать обратную связь, например, создать несколько экземпляров состояния в форме django.

Это в основном вопрос, связанный с базой данных, и я советую вам прочитать об этом дальше.

Отношение внешнего ключа в Django переводится как отношение 1 ко многим в дизайне базы данных.

В вашем примере и в реальном мире 1 государство может иметь 1 страну и только одну страну. Но страна может иметь бесконечное (или n) количество государств.

Поэтому в нашей модели страны мы не можем иметь бесконечные поля для представления всех государств.

Что мы можем сделать, так это сказать каждому государству, к какой стране оно принадлежит.

так что это правильный способ сделать это здесь.

class Country(models.Model):
    name = models.CharField()

class State(models.Model):
    name = models.CharField()
    country = models.ForeignKey(Country)

В первом методе, который вы написали, каждая страна может иметь 1 государство, но каждое государство может принадлежать нескольким странам.

Вернуться на верх