我有一个简单的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.py
将subject
对象视为scrap.subject.all()
无法正常工作。
将subject
对象中存储的值存储在某个变量中以便对其执行某些操作的方法是什么?
答案 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的建议进行操作。