2017-08-17 10 views
1

現在、私がやっている作業のためにDjangoサイトを作成しています。Pythonシェルで作成されたオブジェクト。照会時に認識されません

ポータル/ device_categories/models.py

from django.db import models 

# Create your models here. 
class Type(models.Model): 
    device_category = models.CharField(max_length=20) 

def __str__(self): 
    return self.device_category 

class Device(models.Model): 
    category = models.ForeignKey(Type, on_delete=models.CASCADE) 
    tms_code = models.CharField(max_length=5) 
    device_name = models.CharField(max_length=30) 
    device_count = models.CharField(max_length=3) 

    def __str__(self): 
     return "Device:" + self.device_name 

ポータル/ device_categories/urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^(?P<device_type>[A-Za-z]+)/$', views.deviceList, name='deviceList'), 
] 

ポータル/ device_categories /ビュー:ここに関連するコードのブロックがあります。 py

from django.shortcuts import render 
from django.http import HttpResponse 
from .models import Type, Device 
from django.template import loader 

# Create your views here. 
def index(request): 
    return HttpResponse("This is the Device Categories Page") 

def deviceList(request, device_type): 
    all_devices = Device.objects.get(category__device_category=device_type) 
    template = loader.get_template('device_categories/index.html') 
    context = { 
     'all_devices': all_devices, 
    } 
    return render(request, template, context) 

Iが作成した多数デバイスが使用オブジェクト:

python manage.py shell 

方法、いくつかの例示的なカテゴリは次のとおりファン、スイッチモジュール。すべてのカテゴリも独自のタイプクラスとして設定されています。今、私はファンのカテゴリを割り当てられた5つのオブジェクトを持っていますが、私はURLに行くしようとすると:

Environment: 


Request Method: GET 
Request URL: http://127.0.0.1:8000/device_categories/fans/ 

Django Version: 1.11.4 
Python Version: 3.6.0 
Installed Applications: 
['network_resources.apps.NetworkResourcesConfig', 
'device_categories.apps.DeviceCategoriesConfig', 
'device_inventory.apps.DeviceInventoryConfig', 
'on_call.apps.OnCallConfig', 
'contact_info.apps.ContactInfoConfig', 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles'] 
Installed Middleware: 
['django.middleware.security.SecurityMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware'] 



Traceback: 

File "C:\Program Files (x86)\Python36-32\lib\site-packages\django-1.11.4-py3.6.egg\django\core\handlers\exception.py" in inner 
    41.    response = get_response(request) 

File "C:\Program Files (x86)\Python36-32\lib\site-packages\django-1.11.4-py3.6.egg\django\core\handlers\base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "C:\Program Files (x86)\Python36-32\lib\site-packages\django-1.11.4-py3.6.egg\django\core\handlers\base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "C:\users\wskidmor\Django\nocportal\device_categories\views.py" in deviceList 
    11.  all_devices = Device.objects.get(category__device_category=device_type) 

File "C:\Program Files (x86)\Python36-32\lib\site-packages\django-1.11.4-py3.6.egg\django\db\models\manager.py" in manager_method 
    85.     return getattr(self.get_queryset(), name)(*args, **kwargs) 

File "C:\Program Files (x86)\Python36-32\lib\site-packages\django-1.11.4-py3.6.egg\django\db\models\query.py" in get 
    380.     self.model._meta.object_name 

Exception Type: DoesNotExist at /device_categories/fans/ 
Exception Value: Device matching query does not exist. 

127.0.0.1:8000/device_categories/fans/

私はエラーを取得しています

シェルに入ったときにオブジェクトが存在することを確認したので、間違っていることがわかりません。私はここに掲載された同様の質問を見つけましたが、私はそれらのソリューションを試してみましたが、残念ながらそれは適用されませんでした。あなたの意見では、あなたの助けを

答えて

3

変更するには、この行をありがとう:

all_devices = Device.objects.get(category__device_category=device_type) 

へ:例外は `であるとして、右だが、私はそれがエラーを引き起こしているとは思わない

all_devices = Device.objects.filter(category__device_category=device_type) 
+1

DoesNotExist'、いいえ? –

+0

ありがとう、私はあなたにそれに答えるための小切手をくれた!しかし、今はそれを実行すると、「ファン」カテゴリのデバイスは表示されません。シェルにオブジェクトを作成する以外に何か必要なことはありますか?再度ありがとう@tdsymonds! – nuckingfut5

+2

心配はいりません。 'Device.objects.filter(category__device_category = 'fans')'を実行すると、シェルで何が起こるのですか?結果はありますか?あなたはどこかにタイプミスがないと確信していますか? 'Type.objects.get(device_category = 'fans')'を実行するとカテゴリを取得できますか?私が実行したとき – tdsymonds