如何获得一个类的单个对象?

时间:2016-01-19 08:32:21

标签: python django

我有一个简单的Django模型定义为:

from django.db import models

LEVEL_CHOICES = (('beg', 'beginner'), ('ind', 'inter'), ('exp', 'expert'))

class scrap(models.Model):
    subject = models.CharField(max_length=128, unique=True)
    # level= models.CharField(max_length=128, unique=True)
    level = models.CharField(max_length=128, choices=LEVEL_CHOICES)
    time = models.IntegerField(unique=True)

def __str__(self):
        return self.subject

我希望我的views.pysubject对象视为scrap.subject.all()无法正常工作。

subject对象中存储的值存储在某个变量中以便对其执行某些操作的方法是什么?

3 个答案:

答案 0 :(得分:2)

您可以使用values_list

创建主题列表
all_subjects = scrap.objects.values_list('subject', flat=True).distinct()

答案 1 :(得分:1)

这里有一些基本问题

来自django.db导入模型

LEVEL_CHOICES = (('beg', 'beginner'), ('ind', 'inter'), ('exp', 'expert'))

class Scrap(models.Model): # Classes should be uppercase
    subject = models.CharField(max_length=128, unique=True)
    # level= models.CharField(max_length=128, unique=True)
    level = models.CharField(max_length=128, choices=LEVEL_CHOICES)
    time = models.IntegerField(unique=True)

    def __unicode__(self): # __unicode__ is more recommended if you're using python 2.x
        return self.subject

现在要获取您的主题列表,只需输入:

mySubjects = Scrap.objects.all().values_list('subject', flat=True)

答案 2 :(得分:1)

看起来你走错了路。您可以使用" all()"方法只获取所有数据库模型,即片段(不是主题):

scraps = scrap.objects.all()

然后可以在第二步完成所有科目的学习:

subjects = [s.subject for s in scraps]

但是,出于性能原因,您应该按照Sayse的建议进行操作。