2016-10-25 6 views
0

ユーザーに車両登録を割り当てたいと思っています。ユーザーがウェブサイトにログインすると、自分のホームページに所有している車両規制のリストが表示されます。多対1モデルのフィルター

しかし、モデルクラスを外部キーでフィルタリングすることはできません。

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

Djangoが強力かつ直感的な方法を提供しています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])

関連する問題