1

モデル内にある関数のデータを表示する必要があります。以下の例では、getAdult関数で学生の大人を取得したいと思います。何を入れるべきですか?データを取得します。

models.py:

    class Student(models.Model):

        name = models.CharField(max_length=255)
        age = models.IntegerField(blank=True,
                                  default=0)

        birthday = models.DateField(blank=True,
                                    null=True)
        school = models.CharField(max_length=255,
                                  blank=True,
                                  default='')
        def getAdult(self):
            try:
                adult = self.relationships.filter()[0].adult

                return adult
            except IndexError:
                return None

admin.py:

    from django.contrib import admin
    from school.models import Student

    class StudentAdmin(admin.ModelAdmin):
        list_display=('name',??)

質問がばかげているなら許してください。

4

1 に答える 1

2

メソッドgetAdultは文字列を返す必要があります。オブジェクトのタイプがわからないので、文字列表現が返されるとadult思います。str()

あなたはこのようにすることができます:

class Student(models.Model):
#your stuff

    def getAdult(self):
        try:
            adult = self.relationships.filter()[0].adult
            return str(adult)
        except Exception:
            return ''
    getAdult.shot_description = 'Adult'

class StudentAdmin(admin.ModelAdmin):
    list_display=('name', 'getAdult')

詳細については、ModelAdminのlist_displayを参照してください。

更新(オブジェクトに文字列表現が組み込まれていない場合)

#example Adult model
class Adult(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    age  = models.IntegerField()

class Student(models.Model):
    #other stuff
    def getAdult(self):
        try:
            adult = self.relationships.filter()[0].adult
            return '%s %s' % (adult.first_name, adult.last_name)
        except Exception:
            return ''
    getAdult.shot_description = 'Adult'

class StudentAdmin(admin.ModelAdmin):
    list_display=('name', 'getAdult')
于 2012-08-03T07:10:52.380 に答える