Модель внешнего ключа Django

Я пытаюсь создать 3 модели; Person , Address и Anniversy . План состоит в том, чтобы иметь один адрес и один аннуитет для каждого человека. Но каждый адрес и аннуитет могут иметь несколько человек.

Пока у меня есть следующее, но я думаю, что отношения OneToMany(foreign key) могут быть неправильными. т.е. каждый адрес может иметь одного человека, но каждый может иметь несколько адресов.

 from django.db import models class Person(models.Model): name = models.CharField(max_length=50) birthday = models.DateField() def __unicode__(self): return u'%s' % (self.name) class Address(models.Model): person = models.ForeignKey(Person) address = models.CharField(max_length=150) def __unicode__(self): return u'%s' % (self.address) class Anniversy(models.Model): person = models.ForeignKey(Person) anniversy = models.DateField() def __unicode__(self): return u'%s' % (self.anniversy) 

One Solution collect form web for “Модель внешнего ключа Django”

Вы создаете отношения по-другому; добавьте внешние ключи к типу Person для создания отношения «Много-к-одному»:

 class Person(models.Model): name = models.CharField(max_length=50) birthday = models.DateField() anniversary = models.ForeignKey(Anniversary) address = models.ForeignKey(Address) class Address(models.Model): line1 = models.CharField(max_length=150) line2 = models.CharField(max_length=150) postalcode = models.CharField(max_length=10) city = models.CharField(max_length=150) country = models.CharField(max_length=150) class Anniversary(models.Model): date = models.DateField() 

Любой человек может быть связан только с одним адресом и одной годовщиной, но адреса и юбилеи могут быть указаны из нескольких записей Person .

Anniversary и Address объектам также будут обратные, обратные отношения; по умолчанию он будет называться person_set но вы можете настроить другое имя, если вам нужно. См. Следующие отношения «назад» в документации по запросам.

  • Можете ли вы оптимизировать этот код? (Django, python)
  • Django - группа по дате только одна
  • Методы класса модели Django для предопределенных значений
  • Как удалить кнопку «Добавить» в администраторе Django для конкретной модели?
  • Удаление дочернего объекта в базе данных Django
  • Сохранение изображения / файла через оболочку django
  • Django, фильтрация запросов из метода модели
  • Оптимизация производительности базы данных Postgresql в Django?
  • Итерация через поля модели - Django
  • Использование приложения планировщика Django с вашими собственными моделями
  • Файл переноса Django в другом приложении?
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.