나는 다음과 같은 REQS에 맞게 할 수있는 적절한 장고 모델을 만들려고 오전 : 주소 클래스모델은 많은 관계로 많은 작동하지
사람과 많은 관계로
사람 클래스가 1
: 클래스 그룹 클래스예약 클래스와 많은 관계로 많은 사람들이 내 코드입니다
위격의 컬렉션과 그룹이 포함되어있다
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이 포함될 수 있지만 Person에는 그룹이 포함되지 않습니다. 나는 Person 클래스에 다음 코드를 추가하는 경우는 확실하지 않다 : 책 클래스는 이제 책 레코드 당 사람 & 그룹의 한 레코드가 포함
groups = models.ManyToManyField(Group)
2). 그것은 어떤 PARAMS을 요청 컴파일하지 않기 때문에
person = models.ForeignKey(Person, on_delete=models.CASCADE())
: 나는 모델에 외부 키를 추가 할 때
3), I는 on_delete 태그를 제거했습니다.
나는이 모든 것을 C#으로 만드는 법을 알고 있지만, 나는 파이썬/장고에서이 간단한 작업에 얽매여있다.
에 바인더 제본되는 방법. 이것은 잘못된 것입니다. 외래 키는 엔티티들 간의 양방향 관계를 구축하므로'person.group_set.all()'은 사용자가 속한 그룹을 제공합니다. 또한 디자인은 일관성 문제에 취약합니다. 이것이 당신의 디자인에 의해 허용되어야하는지 확실하지 않지만 책은 책의 다른 그룹에 속한 사람이 소유 할 수 있습니다. – ozgur