2017-12-26 7 views
0

가정하면 프로젝트관리자 모델입니다.django에서 하나의 모델 필드를 사용하여 여러 모델 객체를 참조하는 방법은 무엇입니까?

class Project(models.Model): 
    name = models.CharField(max_length=50) 

class Manager(models.Model): 
    name = models.CharField(max_length=50) 
    role = models.CharField(max_length=20) 
    projects = This would be array of Project object. But how can I 
       implement this? 
    class Meta: 
     unique_together = ('name', 'role') 

다른 이름과 역할을 가진 관리자는 동일한 프로젝트를 가질 수 있습니다.

PostgreSQL에는이 구현을위한 ArrayField가 있습니다. 그러나 모든 데이터베이스에서 작동하는 솔루션이 필요합니다. 모든 대안 솔루션은 매우 주목할 만합니다.

답변

0

Django에서는 Manager를 가리키는 Project에 ForeignKey를 정의하여 다자간 관계를 사용합니다.

0

Django에서 ForeignKey 모델 필드를 사용하여 다 대일 관계를 정의하면 프레임 워크가 자동으로 역방향 관계를 생성합니다.

class Project(models.Model): 
    name = models.CharField(max_length=50) 
    manager = models.ForeignKey('Manager', related_name='projects') 

class Manager(models.Model): 
    name = models.CharField(max_length=50) 

이제 API이로 사용할 수 있습니다 :

my_manager = Manager(name='Hasanul') 
project_one = Project(name='foo', manager=my_manager) 
project_two = Project(name='bar', manager=my_manager) 

# you can use the reverse relationship (defined with a related name). 
# note that it won't return an Array, it's a QuerySet object, that 
# behaves like an array. 
my_manager.projects.all() # [Project<name: 'foo'>, Project<name: 'bar'>] 

# or the direct one: 
project_one.manager # Manager<name: 'Hasanul'> 

우리는 프로젝트 객체,이 경우, 많은 측면에서 ForeignKey을 정의 있습니다.

+0

업데이트 된 코드를 참조하십시오. @fixmycode –

+0

업데이트가 내 코드의 의미에 영향을 미치지 않습니다. 누락 된 매개 변수를 여기 저기에 추가하면 문제가 해결됩니다. – fixmycode

0

관리자가 여러 프로젝트를 관리 할 수 ​​있다는 것입니다. 비즈니스 논리로 인해 프로젝트에 둘 이상의 관리자가있는 경우 프로젝트와 관리자 간의 관계는 Many-To-Many relationship입니다. 그렇지 않으면 Many-to-one relationship

관련 문제