2017-11-19 5 views
0

두 모델이 있습니다. 캠페인 및 게재 위치. 모든 게재 위치 개체는 하나의 캠페인 개체에만 관련됩니다. 모든 게재 위치와 관련된 모든 캠페인 개체를 나열하고 싶습니다.하나의보기에서 두 모델의 모든 물체를 나열하십시오

캠페인 # 1
- 배치 # 1
- 배치 # 2
캠페인 # 2
- 배치 # 3
- 배치 # 4
... 내가 할 수있는 방법

하나의보기와 하나의 템플릿을 가지고 있습니까?

캠페인 모델 :

class Campaign(models.Model): 
ACTIVE = 1 
INACTIVE = 0 
STATUS_CHOICES = (
    (ACTIVE, 'Active'), 
    (INACTIVE, 'Inactive'), 
) 
CPC = 'cpc' 
CPM = 'cpm' 
CPV = 'cpv' 
status = models.IntegerField(default=1, choices=STATUS_CHOICES) 
client_name = models.ForeignKey(Client, on_delete=models.CASCADE) 
campaign_name = models.CharField(max_length=100) 
start_date = models.DateField(default=datetime.date.today) 
end_date = models.DateField(default=datetime.date.today) 

def __str__(self): 
    name = str(self.client_name) + " - " + self.campaign_name 
    return name 

배치 모델 :

class Placement(models.Model): 
ACTIVE = 1 
INACTIVE = 0 
STATUS_CHOICES = (
    (ACTIVE, 'Active'), 
    (INACTIVE, 'Inactive'), 
) 
CPC = 'cpc' 
CPM = 'cpm' 
CPV = 'cpv' 
UNIT_CHOICES = (
    (CPC, 'CPC'), 
    (CPM, 'CPM'), 
    (CPV, 'CPV'), 
) 
status = models.IntegerField(default=1, choices=STATUS_CHOICES) 
campaign_name = models.ForeignKey(Campaign, on_delete=models.CASCADE) 
publisher_name = models.ForeignKey(Publisher, on_delete=models.CASCADE) 
start_date = models.DateField(default=datetime.date.today) 
end_date = models.DateField(default=datetime.date.today) 
unit_type = models.CharField(default='cpc', choices=UNIT_CHOICES, max_length=3) 
units = models.IntegerField(default=0) 
budget = models.IntegerField(default=0) 
budget_spent = models.IntegerField(default=0) 
units_delivered = models.IntegerField(default=0) 

def __str__(self): 
    return str(self.publisher_name) 

답변

1
{% for campaign in campaigns %} 
    {{ campaign.campaign_name }} 
    {% for placement in campaign.placement_set.all %} 
    {{ placement.status }} 
    {% endfor %} 
{% endfor %} 

주, 당신은 정말 "foo_name을"외국 키를 호출하지 않아야합니다; 이름 필드가 아닌 실제 객체를 가리 키므로 campaign, clientpublisher이라고해야합니다.

+0

고마워요! – TityBoi