2013-10-21 5 views
-3

나는 col_a, col_b, col_c, col_c와 함께 table1을가집니다. tb_col1, tb_col2, tb_col3, 나는 col_a -> tb_col, col_b -> tb_col2, col_c -> tb_col3을 참조하고자하는 또 다른 table2를 가지고있다.하나의 테이블에서 여러 개의 외래 키

내가 참조 할 수 있습니다 방법은 다음과
class product_models(models.Model): 
    products = models.ForeignKey('products') 
    model_name = models.CharField(max_length=50) 
    model_price = models.IntegerField(max_length=4) 
    model_desc = models.TextField(blank=True) 
    commision = models.IntegerField(max_length=3) 

    def __unicode__(self): 
     return self.model_name 



class sales_process(models.Model): 

    prospect = models.ForeignKey('prospect') 
    employee = models.ForeignKey(User) 
    first_call = models.DateTimeField 
    product = models.ForeignKey('products') 
    model_name = models.ForeignKey('product_models') 
    #price = reference to product_model for the price 
    #commission = reference to product_model for commission 

priceproduct_modelscommissionproduct_models

에 : 내가 장고 (파이썬)

내 모델이 구현 어떻게 그렇다면

나는, 복합 키를 사용한다

+0

Django 문서에서 [모델 계층] (https://docs.djangoproject.com/en/1.5/#the-model-layer)을 검토하십시오. 표를 구현하기 위해 개발하려고 시도한 코드로 질문을 편집하면 도움을 얻을 수있는 기회가 더 많을 수 있습니다. –

+0

@Joseph Paetz 더 명확하게 질문을 업데이트했습니다. – rakesh

답변

0

product_models과 sales_process와의 관련성이 그다지 좋지 않은 이유는 무엇입니까?

product_model = models.ForeignKey('product_models')

sales_process 모델의 product_models에서 여러 개의 열을 복제 할 필요가 없습니다.

는 또한, 사용자 정의 모델 관리자에서 살펴 : https://docs.djangoproject.com/en/dev/topics/db/managers/

당신은 모델에 편리한 메소드를 만들 수 있습니다 멋지게라는 이름의 방법으로 (관련 모델 일을 찾아 말을).

아래 예제에서 Team.objects.get (pk = 1) .games()를 호출하면 팀, 집 또는 멀리있는 모든 게임을 반환합니다.

class TeamManager(models.Manager): 
    def games(self, name): 
     return Game.objects.filter(home__name=name) | Game.objects.filter(away__name=name) 


class Team(models.Model): 
    objects = TeamManager() 
    name = models.CharField(max_length=100, unique=True) 

class Game(models.Model): 
    away = models.ForeignKey(Team, null=True, blank=True, related_name="away") 
    home = models.ForeignKey(Team, null=True, blank=True, related_name="home") 
+0

주목할만한 포인트입니다. 그러나 그렇다고해서 내가 여전히 복제본을 갖고 싶다면 어떻게해야할까요? – rakesh

+0

정말 그렇게하고 싶지 않다고 생각합니다. 왜 그것이 필요하다고 생각하는지 설명해 주시겠습니까? – mconlin

+0

'sales_process'를 데이터베이스 뷰로 만들 계획입니다. 여기서 테이블을 만들지 만 두 테이블을 결합하여 출력합니다. – rakesh

관련 문제