我是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
但错误...... 我确信有一些简单的事情可以做到。
我提前感谢你们提出我的问题的时间。
保
答案 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):
....