2017-09-28 1 views
1

안녕하세요, 사용자가 요청을 보낼 때 내 장고 프로젝트에서 3 모델을 가지고 있습니다. dealer_id 재질 테이블의 재질에 대한 정보와 각 행에 대한 반환 쿼리 세트가 마지막 모델의 discount_percent를 추가해야합니다. 여기서 dealer_id = 현재 dealer_id 및 행 ID. 대답이 있으면 도와주세요.Django 쿼리 세트에 필드 추가

모델

class Material(models.Model): 
    id = models.AutoField(primary_key=True) 
    color = models.IntegerField() 
    name = models.CharField(max_length=100) 
    material_width = models.IntegerField() 
    price = models.BigIntegerField(default=0) 

class Dealer(models.Model): 
    id = models.AutoField(primary_key=True) 
    dealer_name = models.CharField(max_length=100) 
    dealer_phone = models.CharField(max_length=13, unique=True) 
    dealer_email = models.CharField(max_length=150, null=False, unique=True) 
    dealer_firm_name = models.CharField(max_length=100, null=True) 
    dealer_address = models.CharField(max_length=100, null=True) 
    dealer_unp = models.CharField(max_length=9, null=True) 
    dealer_amount = models.FloatField(default=0.0) 
    user_id = models.BigIntegerField(unique=True) 

class MaterialDealerPrice(models.Model): 
    id = models.AutoField(primary_key=True) 
    dealer_id = models.BigIntegerField(null=False) 
    material_id = models.BigIntegerField(null=False) 
    discount = models.FloatField(null=True, default=0.0) 
+0

텍스트 대신 모델 설명을 추가하고 이미 시도한 내용을 추가하십시오. –

+0

클래스 재료 (models.Model) : ID = models.AutoField (primary_key와 = 참) 색상 = models.IntegerField() 이름 = models.CharField (MAX_LENGTH = 100) material_width = models.IntegerField() 가격 = 모델명 .BigIntegerField (기본값 = 0) –

+0

모든 모델을 의미하고 논평이 아닌 질문을 편집하십시오. –

답변

1

이 자동으로 inspectdb를 실행하여 생성 된 모델 세트처럼 보인다. 그 결과를 항상 첫 번째 초안으로 다루어야합니다. 그것을 정돈하기 위해 수작업으로 수행해야하는 작업이 많이 있습니다.

class MaterialDealerPrice(models.Model): 
    dealer = models.ForeignKey('Dealer', null=False) 
    material = models.ForeignKey('Material', null=False) 
    discount = models.FloatField(null=True, default=0.0) 

둘째,이 모델은 다 대다 관계를 통해 테이블이 사실에 있음을 인식해야한다 :

첫째, 당신의 MaterialDealerPrice 모델은 해외 판매점 키와 재질을 가질 필요가있다.

class Material(models.Model): 
    ... 
    dealers = models.ManyToManyField('Dealer', through='MaterialDealerPrice') 

이제 쿼리에서 이러한 관계를 따라야합니다. 불행히도 당신의 질문은 당신이 실제로하고 싶은 것을 알만큼 충분히 명확하지 않습니다; 원하는 결과물의 예를 제시해야합니다.

관련 문제