我有几个模型,我通过上下文字典将每个模型的实例传递给我的模板:
def suite(request, oem_name_slug, project_name_slug, variant_name_slug, suite_name_slug):
s = Suite.objects.get(slug=suite_name_slug),
context_dict = dict(
oem=OEM.objects.get(slug=oem_name_slug),
project=Project.objects.get(slug=project_name_slug),
variant=Variant.objects.get(slug=variant_name_slug),
group=s[0].group,
suite=s,
)
return render(request, r'vtc\suite.html', context_dict)
我遇到的问题是第一个get()
:
s = Suite.objects.get(slug=suite_name_slug)
返回一个元组,其中我正在尝试检索作为第一个元素的对象,而不是像我期望的documentation那样直接返回对象。请注意,我没有使用get_or_create()
,这当然会返回一个元组。其他get()
命令正如我所期望的那样工作。
Suite.objects.get(slug=suite_name_slug)
提供(<Suite: $SuiteName>,)
Project.objects.get(slug=project_name_slug)
提供<Project: $ProjectName>
以下是各自的模型:
class Suite(models.Model):
group = models.ForeignKey(Group, related_name='suites')
name = models.CharField(max_length=NAME_MAX_LENGTH, default='')
slug = models.SlugField(default='')
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Suite, self).save(*args, **kwargs)
class Meta:
unique_together = (
('group', 'name'),
)
def __unicode__(self):
return self.name
class Project(models.Model):
oem = models.ForeignKey(OEM, related_name='projects')
name = models.CharField(max_length=NAME_MAX_LENGTH, default='')
slug = models.SlugField(default='')
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Project, self).save(*args, **kwargs)
class Meta:
unique_together = (
('oem', 'name'),
)
def __unicode__(self):
return self.name