2009-07-29 5 views
-2

挨拶、私はこれらの2つのモデルがあります:ジャンゴ1

from django.db import models 

class Office(models.Model): 
    name = models.CharField(max_length=30) 
    person = models.CharField(max_length=30) 
    phone = models.CharField(max_length=20) 
    fax = models.CharField(max_length=20) 
    address = models.CharField(max_length=100) 
    def __unicode__(self): 
      return self.name 



class Province(models.Model): 
    numberPlate = models.IntegerField(primary_key=True) 
     name = models.CharField(max_length=20) 
    content = models.TextField() 
    office = models.ForeignKey(Office) 
    def __unicode__(self): 
      return self.name 

私は多くのモデルに1である州のためのいくつかのオフィスを、選択することができるようにしたいです。ここに私のadmin.pyは次のとおりです。

from harita.haritaapp.models import Province, Office 
from django.contrib import admin 


class ProvinceCreator(admin.ModelAdmin): 
     list_display = ['name', 'numberPlate','content','office'] 

class OfficeCreator(admin.ModelAdmin): 
     list_display = ['name','person','phone','fax','address'] 


admin.site.register(Province, ProvinceCreator) 
admin.site.register(Office, OfficeCreator) 

今、私は、新しい省を作成しながら、管理パネルで、省ごとにオフィスを選択することができていますが、私は以上のいずれかを選択できるようにしたいです。どうすればこれを達成できますか?

よろしく

答えて

2

私はあなたを誤解してるかどうかはわからないんだけど、あなたのモデルは、現在、「オフィスは、多くの州に関連付けることができますが、各県に一つだけオフィスを有していてもよい」と言います。これはあなたが望むものと矛盾します。代わりにManyToManyフィールドを使用してください:

class Province(models.Model): 
    numberPlate = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=20) 
    content = models.TextField() 
    office = models.ManyToManyField(Office) 
    def __unicode__(self): 
     return self.name 
+0

ありがとうございました、今は魅力的です!私はdjangoで1対1の意味を誤解していたと思います。将来の視聴者のための だけで簡単なメモは、私もlist_displayを許可しないようProvinceCreatorを変更しなければならなかったManyToManyFields: クラスProvinceCreator(admin.ModelAdmin): フィールドセット=( (なし、{ 'フィールド':(」 })、 ) いいえ、お名前、お電話番号、 –

+1

また、規約では、複数の名前を使用してM2Mフィールドを使用します。申し訳ありませんが、私の例はこれを伝えていませんでした(気になるC&P!)。さらに、すべてのフィールドを表示している場合は、フィールドセットを定義する必要はありません(明示的に並べ替えたい場合を除いて、現時点では表示されています)。幸運、仲間の長男! – Cide