3

大学用のモデルと連絡先用のモデルがあります。

class University(models.Model):

    abbrev = models.CharField(max_length=20, unique=True) # example "ASU" for Alabama State University
    name = models.CharField(max_length=512, unique=True)
    city = models.CharField(max_length=512)
    state = models.CharField(max_length=2, choices=STATE_CHOICES) # abbreviation
    region = models.CharField(max_length=2, choices=REGION_CHOICES) # examples Mid West, South Coast, etc.
    type = models.CharField(max_length=3, choices=TIPO_IES_CHOICES) # public, private, etc.

class UniversityContact(models.Model):

    person ...
    university ... # models.OneToOneField("University") ???

'abbrev', 'state', 'region',管理インターフェイスで UniversityContact を編集するときに、大学から「プル」し'type'て連絡先情報と一緒に表示できるようにしたいと考えています。それは可能ですか?そのコンテキストから編集可能である必要はありません。

これらのフィールドをすべて " " として UniversityContact に追加しようとしましたが、結局、他のテーブルからmodels.OneToOneField("University", related_name='...')- - 同じ値が表示されます。abbrev

連絡先を地域などですばやく並べ替えられるようにしたいと考えています。

4

1 に答える 1

2

表示は簡単です。モデルまたは管理クラスで関連データを返すメソッドを定義し、そのメソッドをlist_displayおよび/またはで使用しreadonly_fieldsます。

admin_order_field並べ替えには、メソッドのプロパティを定義します。list_displayandreadonly_fieldsは、二重アンダースコア関連のフィールド構文をサポートしていませんが、サポートしていadmin_order_fieldます。だから、このようなもの:

class UniversityContact(models.Model):
    # as above, plus:
    def abbrev(self):
        return self.university.abbrev
    abbrev.admin_order_field = 'university__abbrev'

short_descriptionメソッド名のデフォルトの選択が必要ない場合は、オプションで属性も設定できます。

    abbrev.short_description = 'abbreviation'

これについては質問していませんが、知っておく価値があるようです-list_filter標準の関連フィールド名構文もサポートしています:

    list_filter = ('university__region',)

または、これに対処すると主張するコード スニペットがここにあります: http://djangosnippets.org/snippets/2887/

私はそれを自分でテストしていません。

于 2013-10-12T05:02:20.527 に答える