在admin.py中使用不同的模型字段

时间:2014-04-25 09:23:23

标签: django django-models django-forms django-admin python-3.4

我是django的新手,我正在玩它。但我有一个问题,我无法找到解决方案。

这是我的代码:

admin.py

from django.contrib import admin
from surveyApp.models import survey, answer

admin.site.register(survey)

class answerAdmin(admin.ModelAdmin):
    list_display = ('answer_text', 'survey', 'category', 'ans_date', survey.get_exp())

admin.site.register(answer, answerAdmin)

models.py

from django.db import models

Create your models here.                                                                                                                                                                                   

class survey (models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    exp_date = models.DateTimeField('date expired')

    def __str__(self):
        return self.question
    def get_exp(self):
        return self.exp_date



class answer (models.Model):
    FB_CAT = (
        ('N', 'Network'),
        ('D', 'Display'),
        ('F', 'Function'),
        )
    survey = models.ForeignKey(survey)
    answer_text = models.CharField(max_length=200)
    category = models.CharField(max_length=1, choices=FB_CAT)
    ans_date = models.DateTimeField('date answered')

    def __str__(self):
        return self.answer_text

所以,我想在list_display(class answerAdmin)中添加调查的exp_date。

我如何访问它?

现在这段代码给了我一个错误:'str'对象没有属性'exp_date'。

我已经尝试过了:

survey.get_exp()
'survey.exp_date'
survey.exp_date

但错误...... 我确信有一些简单的事情可以做到。

我提前感谢你们提出我的问题的时间。

1 个答案:

答案 0 :(得分:1)

只需将{cal}添加到AnswerAdmin

即可
from django.contrib import admin
from surveyApp.models import survey, answer

admin.site.register(survey)

class AnswerAdmin(admin.ModelAdmin):
    list_display = ('answer_text', 'survey', 'category', 'ans_date', 'exp_date')

    def exp_date(self, obj):
        return obj.survey.exp_date
    exp_date.short_description = 'Exp Date'

    admin.site.register(answer, answerAdmin)

此外,正如一般的Django建议:模型(或任何其他类)通常都是大写的。因此:

class Survey (models.Model):
    ....