2011-07-25 91 views
1

嗨我真的很需要非常非常簡單的例子。首先我的模特:django ForeignKey模型過濾器在管理區?

#This my student models 
from django.db import models 
SEX_CHOICES= (
    ('M', 'Male'), 
    ('F', 'Female'), 
) 
class Students(models.Model): 
    student_name = models.CharField(max_length=50) 
    student_sex = models.CharField(max_length=8, choices=SEX_CHOICES) 
    student_city = models.Charfield(max_length=50) 
    student_bio = models.TextField() 

    def __unicode__(self): 
     return self.student_name 

O.K.讓我看看我的ClassRooms模型。

#This my ClassRooms models 
from django.db import models 
from myproject.students.models import * 
class ClassRooms(models.Model): 
    class_number= models.CharField(max_length=50) 
    class_student_cities = models.ForeignKey(Students) 
    class_year = models.DateField() 

    def __unicode__(self): 
     return self.class_number 

如何在class_student_cities區域顯示Students.student_city數據?我想那關於Django的管理區域。當我用class_student_cities = models.ForeignKey(Students)做這件事時,我只在該區域看到Students.student_name數據(例如:John Smith)。我想看到JUST Students.student_cities數據(例如:紐約)。 你能舉個小例子嗎?

我應該用類似的東西:

class_student_cities = models.ForeignKey(Students.student_cities) 

非常感謝!

+0

你能描述學生和ClassRooms之間的關係嗎?你想了解哪些城市和教室? (例如,「教室裏學生的所有城市都是什麼樣子?」)從模型名稱來看,我希望學生有一個類似'classroom = models.ForeignKey(ClassRoom)'的字段,而不是相反。在django中查看[外鍵]的文檔和示例(https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey)。 – tcarobruce

+0

僅供參考我將您的未註冊帳戶合併到此帳戶中。 – Will

回答

1

嘗試重新定義unicode方法。

def __unicode__(self): 
     return self.student_city 

所以你會在現場看到學生的城市。

嗯,我試着重新制作你的應用程序來設置表單類的數據。像這樣的事情在admin.py你的應用程序:

from django.contrib import admin 
from django import forms 
from myapp.models import * 

class ClassRoomsAdminForm(forms.ModelForm): 
    class Meta: 
     model = ClassRoom 
    def __init__(self, *arg, **kwargs): 
     super(ClassRoomsAdminForm, self).__init__(*arg, **kwargs) 
     self.fields[' class_student_cities'].choices = [(csc.id,csc.student_city) for csc in Students.objects.all() 

class ClassRoomsAdmin(admin.ModelAdmin): 
    form = ClassRoomsAdminForm 

admin.site.register(ClassRooms,ClassRoomsAdmin) 

也許你需要修復的東西,但我希望它會奏效。您將爲您的表單設置init函數,因此在管理面板中,您將所有選項都設置爲您保留在學生模型中的所有選項。 csc.id你需要使這個對象可迭代(城市不是唯一的),然後你可以選擇學生模型中的所有內容在場中設置。

+0

我很抱歉有這麼多版本,但我想要完美的代碼來回答這個問題。 – Dracontis

+0

在你的第二個例子中,我得到語法錯誤: self.fields ['class_student_cities']。choices = [(csc.id,csc.student_city)for csc in Students.objects.all() – abraham

+0

Ok I修復它讓我們再試一次:) – abraham