Что такое обратный иностранный ключ и обычный иностранный ключ
Это вопрос от новичка в 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 государство, но каждое государство может принадлежать нескольким странам.