django get()返回一个元组而不是对象本身

时间:2016-09-28 15:08:39

标签: python django python-2.7 django-1.9

我有几个模型,我通过上下文字典将每个模型的实例传递给我的模板:

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

0 个答案:

没有答案