2013-01-03 49 views
0

型號:Django的視圖模型迭代

class Subject(models.Model): 
    name = models.CharField(max_length=50) 
    places = models.IntegerField() 

class Temp(models.Model): 
    subject_r = models.ForeignKey(Subject) 

現在,在我的觀點我想要做簡單的事情: 如果臨時表存在對象ID,場地方(這是整數)需要1遞減,否則,它應該保持原樣,然後我想在模板中顯示正確的位置變量。請注意,我不想在數據庫中保存新值,我只是希望它能夠在模板中正確顯示。

+0

您是否關心主題ID在臨時表中存在的次數?如果是這樣,那麼使用count()。也許在你的視圖中是這樣的:Temp.objects.filter(subject_r = self.id).count() –

+0

self.id應該是subject.id –

回答

1
temp = Temp.objects.values_list('subject_r_id', flat=True) 
subjects = Subject.objects.all() 
for subject in subjects: 
    if subject.id in temp: 
     subject.places = subject.places - 1 

因爲它只的顯示,我真的,這樣很明顯你不是要修改數據庫設置的任意新屬性。

temp = Temp.objects.values_list('subject_r_id', flat=True) 
subjects = Subject.objects.all() 
for subject in subjects: 
    if subject.id in temp: 
     subject.places_display = subject.places - 1 
    else: 
     subject.places_display = subject.places 


{{ subject.places_display }} 
+0

現在我怎樣才能在模板中顯示所有主題?我不知道如何將它作爲上下文傳遞,因此我可以用正常值和遞減值來迭代主題。 – Chris

+0

以同樣的方式將任何其他數據傳遞給模板上下文。 –