这是更多的感觉像是大量的工作/黑客代码
假设我有这样一些模型:
class Semester(models.Model):
year = models.IntegerField()
month = models.IntegerField()
# ... some fields
class Course(models.Model):
semesters = models.ManyToManyField(Semester)
# ... some fields
class Section(models.Model):
semesters = models.ManyToManyField(Semester)
course = models.ForeignKey(Course, related_name='sections')
# ... more fields
因此,为了便于查看,我将按学期获取课程列表。但我也想列出一个学期的课程。这就产生了一个难题:我该把这个放在哪里?我不能在模板中这样做(因为模板不能真正处理带参数的方法),我一直在这样做:
def view(request, year, month):
# for simplicity, no error handling
semester = Semester.objects.get(year=year, month=month)
courses = []
for c in Course.objects.filter(semesters=semester):
courses.append({
'semesters': c.semesters.all(),
# repeat for every course field
'sections': c.sections.filter(semesters=semester),
})
# render template with courses variable
我觉得这不是最佳的方式,因为有很多数据转换正在进行,只是为了模板。我通常会为那些不需要任何参数的模型编写方法,但是那些需要参数的呢
不管怎样,你都要进行数据转换。。。但是如果你想让模板更简单一点,你可以返回一个生成器,而不是课程和/或学期的列表
相关问题 更多 >
编程相关推荐