【发布时间】:2011-08-31 15:44:06
【问题描述】:
我有一个模型“目标”,其中引用对象的常用方法是使用 unicode 方法。
models.py:
class Objective(models.Model):
level = models.IntegerField()
strand = models.ForeignKey(Strand)
order = models.IntegerField()
description = models.TextField()
def __unicode__(self):
return u'%s%s%s' % (self.level, self.strand.code, self.order)
class Meta:
unique_together = ("strand", "level", "order")
ordering = ['level', 'strand', 'order']
此模型中的示例对象将被称为例如6ssm4,用于 ssm 链中第 6 级的第四个条目。我想通过引用这个 unicode 字符串来进行查找(比如从 url 解析)。
urls.py:
(r'^(?P<objective>[^/]+)/$', 'display_objective'),
我已经在views.py中尝试了以下所有变体(不是一次全部!):
def display_objective(request, objective):
theobjective = Objective.objects.get(unicode() = objective)
theobjective = Objective.objects.get(self.unicode = objective)
theobjective = Objective.objects.get(__unicode__ = objective)
theobjective = Objective.objects.get(objective__iexact = objective)
theobjective = Objective.objects.get(objective)
theobjective = Objective.objects.get(unicode() = objective)
但是,如果我转到 http://localhost:8000/6ssm4/,我会看到错误页面,其中包含“关键字不能是表达式”或“无法将关键字“自我”解析为字段。选项有:评估、描述、ID、级别、顺序,链”。
这是查找对象的合法方式,还是我应该剖析关键字?如果合法,正确的语法是什么?
【问题讨论】: