2011-07-25 15 views
1

こんにちは私は本当に非常に簡単な例が必要です。最初のモデル:admin-areaの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-adminエリアについてそれを推測します。私はclass_student_cities = models.ForeignKey(Students)と一緒にそれをやると、その領域にStudents.student_nameデータ(例:John Smith)が表示されます。私はJUST Students.student_citiesのデータ(例:NewYork)を見たいです。 私に少しの例を教えてもらえますか?

class_student_cities = models.ForeignKey(Students.student_cities) 

多くの感謝:

は、私はそのようなものを使用すべき!

+0

学生とClassRoomsの関係を記述することはできますか?都市や教室について何を知りたいですか? (たとえば、「教室の学生のすべての都市は何ですか?」)モデル名からは、「classroom = models.ForeignKey(ClassRoom)」のようなフィールドがあります。 djangoのドキュメントと[foreign keys](https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey)の例を見てください。 – tcarobruce

+0

FYI未登録のアカウントをこのアカウントにマージしました。 – Will

答えて

1

改革を試すユニコードメソッド。

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) 

たぶん、あなたが何かを修正する必要がありますが、私はそれが動作することを願っています。フォームにはの機能が設定されているので、管理パネルではすべての選択肢を学生モデルに保存するすべてに設定します。 csc.idこのオブジェクトを反復可能にする必要があります(都市は一意ではありません)。次に、Studentsモデルからフィールドに設定するすべてを選択できます。

+0

非常に多くのエディションは申し訳ありませんが、私はこの質問に答えるために完璧なコードを望んでいます。 – Dracontis

+0

hmm 2番目の例では、この行に構文エラーが表示されます。 self.fields ['class_student_cities']。students.objects.all()内のcscのchoices = [(csc.id、csc.student_city) – abraham

+0

修正してみてください:) – abraham

関連する問題