2011-07-25 38 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