Я пытаюсь создать правильную модель Django, которые могли бы соответствовать следующим Reqs:модели в Python Django не работают многие ко многим отношений
Person класса имеет от 1 до многих отношениях с адресами класса
Person Класс имеет много ко многим отношений с группой класса
книги класса содержит коллекции лиц и группы
Это мой код:
class Person(models.Model):
first_name = models.CharField(max_length=15)
last_name = models.CharField(max_length=20)
def __str__(self):
return self.first_name+ ' - ' + self.last_name
class Address(models.Model):
person = models.ForeignKey(Person)
address_line = models.CharField(max_length=200)
def __str__(self):
return self.address_line
class Group(models.Model):
group_name = models.CharField(max_length=12)
persons = models.ManyToManyField(Person)
def __str__(self):
return self.group_name
class Book(models.Model):
record_name = models.CharField(max_length=12)
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
def __str__(self):
return self.record_name
Однако это неправильное: 1) Группа теперь может содержать несколько лиц, но Лица не содержат никакой группы. Я не уверен, если я должен добавить к классу Person следующий код:
groups = models.ManyToManyField(Group)
2) Класс Book теперь содержит только 1 запись Person & группы в книге записи.
3) Когда я добавил внешние ключи к моделям, я удалил on_delete тег:
person = models.ForeignKey(Person, on_delete=models.CASCADE())
, потому что он не компилирует его, прося некоторых Params.
Я знаю, как сделать все это для C#, но я как бы пробовал эту простую задачу в Python/Django.
. Это не верно. Внешний ключ создает двунаправленную связь между объектами, поэтому 'person.group_set.all()' даст вам группы, к которым принадлежит человек. Кроме того, ваш дизайн уязвим для проблем с согласованностью. Я не уверен, что это должно быть разрешено вашим дизайном, но книга может принадлежать человеку, принадлежащему к другой группе, чем книга. – ozgur