2017-12-07 3 views
0

두 모델 간의 일대 다 관계를 정의하는 방법을 파악하려고합니다. 여기에있는 어려움은 모델 중 하나를 만지기를 원하지 않기 때문에 일반적인 ForeignKey (다 대일)를 사용할 수 없다는 것입니다.모델에서 Django 일대 다 관계 (조회가 아님)

이 주제에 대해 많은 질문이 있지만 조회 방법 (역방향 ForeignKey 조회)에 대해 모두 이야기하거나 외래 키를 한쪽에만 추가하는 것이 좋습니다. 여기에 similar question입니다. 동일한 코드 예제를 사용합니다.

class PhoneNumber(models.Model): 
    dude = models.ForeignKey(Dude, related_name='numbers') 

하지만 내 상황에서 내가 싶습니다 : 많은 답변에 제안 내가 가서 그냥 PHONENUMBER에 외래 키를 추가 일반적으로

class Dude(models.Model): 
    numbers = models.OneToManyField('PhoneNumber') 

class PhoneNumber(models.Model): 
    number = models.CharField() 

: 이를 위해 내가 무엇을 찾고있다 PhoneNumber 모델을 건드리지 않으므로 Dude 모델에서 무언가를 정의하십시오.

나는 거의 사용되지 않는 특별한 상황을 설명하는 모델을 정의하고 있습니다. ForeignKey를 (PhoneNumber) 모델에서 사용한 경우 모든 인스턴스의 99.9 %가이 필드를 비워 둡니다. 나는 항상 비어있는 분야를 가지고 있다는 생각을 정말로 좋아하지 않는다. 아마도 이것은 나의 문제 일 것이다.

가능한 해결 방법은 many-to-many 필드를 정의한 다음 한쪽에 'many'를 실제로 방지하고 다른 쪽이 비어 있지 않도록 강제하는 로직을 추가하는 것입니다.

나는 분명히 내 문제를 설명 할 수 있기를 바랍니다.

질문 : 일대 다 관계를 정의하는 방법이 있습니까? 내 문제에 대해 다른 접근법을 사용하는 더 좋은 해결책이 있습니까?

P. 내가 장고 문서에서 얻을 수있는 유일한 히트는 필드 속성이 one_to_many인데, 나는 추측하고 있는데, 조회에 사용된다.

+0

[장고에서 일대 다 관계를 표현하는 방법] 가능한 복제본 (https://stackoverflow.com/questions/6928692/how-to-express-a-one-to- 많은 관계 - django) – ptr

+0

필드는 대개 비어 있습니다.그것은 당신이 걱정하는 경우 데이터베이스의 중요한 공간을 차지하지 않습니다. –

+0

사실 내 질문에 "비슷한 질문"으로 그 질문에 링크. 그 질문에 대한 답이 만족스럽지 않은 이유는 내가 phoneNumber 모델을 만지는 것을 원치 않기 때문입니다. – jimfawkes

답변

0

(PhoneNumber) 모델에 ForeignKey를 사용하면 모든 모델의 99.9 %가이 필드를 비워 둡니다. 나는 항상 비어있는 분야를 가지고 있다는 생각을 정말로 좋아하지 않는다. 아마도 이것은 나의 문제 일 것이다.

종류가 있습니다. 일대 다를 정의하려면 ForeignKey을 사용하고 PhoneNumber 모델에 있어야합니다. 이것은 내가 볼 수있는 한 당신의 접근 방식에 어떠한 단점도 제공하지 않습니다. 주된 이슈 인 것처럼 들리지만, 여러분은 이것을 다른 방식으로하는 라이브러리를 사용하는 데 익숙해 져 있습니다. 그래서 이렇게하면 라운드가 이상하게 보입니다.

난 당신이 무슨 뜻인지 이해가 안 무서워

모든 모델의

99.9 %는이

빈 필드 당신이 그들을 허용하지 않는 한 그들은 비워 둘 수 없습니다 떠나 null=True, blank=True 등으로 설정하십시오.

+0

좋은 점, 편집 – ptr

+0

나는 그 모델의 모든 인스턴스의 99.9 %가 공백으로 남을 것이라고 말했습니다. True와 null을 공백으로 정의해야합니다. – jimfawkes

+0

PhoneNumber 모델에 ForeignKey를 정의하는 데 사용됩니다. 다른 방법이 있습니까? 다른 방법으로하고 싶습니다만 어떻게해야할지 모르겠습니다. 기본적으로 역방향 ForeignKey. – jimfawkes