如何访问模型中的列?

时间:2018-03-28 14:56:37

标签: python django

如何在NewUser模型中获取收入? 我想用用户的收入数据来过滤汽车模型的数据。如果NewUser的收入=汽车收入,我的理想系统是汽车名称显示在car.html中。 我在models.py中写道

class NewUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    income = models.CharField(max_length=20, null=True, default=None)

class Car(models.Model):
    name = models.CharField(max_length=100, null=True, default=None)
    income = models.CharField(max_length=20, null=True, default=None)
在views.py中

from app.models import Car
from django.shortcuts import render

def car(request):
    car_data = Car.objects.all().filter(income=request.user.income)
    return render(request, 'car.html', {'car_data': car_data})

当我访问car方法时,/ app / car /上的AttributeError '用户'对象没有属性'收入'错误发生。我真的不明白为什么会发生这样的错误。我在NewUser中继承用户模型,所以我想我可以在request.user中访问收入。我该怎么解决这个问题?什么是我的代码错了吗?

1 个答案:

答案 0 :(得分:1)

您收到该错误,因为用户表没有收入列。它是具有它的NewUser模型。 由于NewUser和User之间存在OneToOneField,您只需执行以下操作:

car_data = Car.objects.all().filter(income=request.user.newuser.income)

另外,您声明在NewUser中继承了User模型,但事实并非如此,NewUser继承了models.Model。