在django中显示数据库中的数据

时间:2013-05-28 06:15:49

标签: django django-models django-forms django-admin django-views

models.py

class Types(models.Model):
    user = models.ForeignKey(User, null=True)
    title = models.CharField('Incident Type', max_length=200)
    parent_type_id = models.CharField('Parent Type', max_length=100, null=True, blank=True)
    is_active = models.BooleanField('Is Active', default=True)

上面的视图和表单用于向数据库添加数据并在模板中显示动态复选框。现在我想从数据库中获取这些值并将其显示在另一个页面中。为此,我的views.py是

def what(request):
    user = request.user
    type = TypeSelectionForm(type_id)
    types = Types.objects.filter(user=user.id, parent_type_id=None).order_by('title')
    typelist = Types.objects.filter(user=user.id,parent_type_id=type_id).order_by('title')
 #   type = Types.objects.filter(parent_type_id=type_id)
    return render(request, 'incident/what.html',
        {
            'newreport_menu': True,
            'types':types,
            'typelist': typelist,
    })

我试图通过上面提到的视图过滤数据库中的数据并将其显示在另一个页面中,但我不确定我在What视图中使用的代码是否正确,因为它没有提供相关的输出例如,如果数据库中的值为“School”,则表示输出为[<Types: Types object>, <Types: Types object>] [<Types: Types object>, <Types: Types object>]

1 个答案:

答案 0 :(得分:1)

如果问题与<Types: Types object>部分有关,请在__unicode__()模型中添加Types方法。

class Types(models.Model):
    user = models.ForeignKey(User, null=True)
    title = models.CharField('Incident Type', max_length=200)
    parent_type_id = models.CharField('Parent Type', max_length=100, null=True, blank=True)
    is_active = models.BooleanField('Is Active', default=True)

    def __unicode__(self):
        return self.title

    @property
    def parent_types(self):
        """ For accessing the parent types without introducing relationship """
        return self.objects.filter(pk=self.parent_type_id)

这将在列表中显示对象的title,而不是<Types: Types object>

更新:我添加了一个属性,以便您可以在不更改模型的情况下访问types.parent_types等父类型。