2016-10-25 6 views
0

사용자에게 차량 등록을 할 수 있기를 원합니다. 사용자가 웹 사이트에 로그인하면 홈 페이지에 자신이 소유 한 자동차 규정 목록이 있어야합니다.다기간 모델의 필터

그러나 외래 키를 필터링하기 위해 모델 클래스를 가져올 수 없습니다.

views.py

@login_required 
def home(request): 
    # This is the basic user landing Page 
    veh_list = Vehicle.objects.filter(UserProfile.user) 
    return render(request, 'portal/home.html', {"veh_list": veh_list}) 

model.py

from django.db import models 
from django.contrib.auth.models import User 

# Create your models here. 
class UserProfile(models.Model): 
    # This line is required. Links UserProfile to a User model instance. 
    user = models.OneToOneField(User) 

    # The additional attributes we wish to include. 
    compName = models.CharField(max_length = 20) 
    milkco = models.IntegerField() 


    # Override the __unicode__() method to return out something meaningful! 
    def __unicode__(self): 
     return self.user.username 

class Vehicle(models.Model): 
    vehid = models.CharField(max_length = 10) 
    company = models.ForeignKey(UserProfile, default = 1) 

    class Meta: 
     db_table = "vehicle" 

    def __unicode__(self): 
     return self.vehid 

home.html을

<!DOCTYPE html> 
{% extends 'portal/base.html' %} 

{% block title %}{{user.first_name }} {{ user.last_name }} Portal{% endblock %} 

{% block content %} 

    <p>This is the home Page</p> 
    {% if user.is_authenticated %} 
     <h4>Optiload says... hello {{ user.first_name }} {{ user.last_name }}!</h4> 
    {% endif %} 

    {% for veh in veh_list %} 
     {{ veh}} 
    {% endfor %} 

    {% if user.is_authenticated %} 
     <a href="/logout/">Logout</a><br/> 
    {% endif %} 
{% endblock %} 

사람이 내가 잘못 갈거야 어디 좀 도와 주 시겠어요?

감사

당신은 익명의 인수 쿼리를 할 수 없습니다
+0

이 일을하는 것처럼 보일 것입니다? 'veh_list = Vehicle.objects.filter (company__user = request.user)' – Sagar

+0

@Sagar 예. 그게 내가 필요한 것입니다. – Jim

+0

대답으로 추가 할 것입니다 :) – Sagar

답변

1

장고 강력하고 직관적 인 방법을 제공합니다 looku에서 관계를 따라야한다. ps, 자동으로 SQL JOIN을 처리합니다. 관계를 확장하려면 원하는 필드에 도달 할 때까지 모델에서 관련 필드의 필드 이름을 이중 밑줄로 구분하여 사용하십시오.

그래서 쿼리는

veh_list = Vehicle.objects.filter(company__user=request.user) 

Reference

0

:

Vehicle.objects.filter(UserProfile.user)

을이 경우에는 당신이 원하는 :

Vehicle.objects.filter(company=[your user])