2013-04-22 4 views
5

MongoDB와 Django를 함께 사용하려고합니다. 필자는이 안내서를 따라 모든 필수 사항이 설치되도록했습니다. 다음과 같이 MongoDB + Django tutorial 내 문제는 다음과 같습니다 에서 cities = City.objects.get()을 실행하려고 할 때 내 views.py 나는 다음과 같은 오류가 발생합니다 :Django + MongoDB

DoesNotExist at /GetAllCities/ 
     City matching query does not exist. 

내 MongoDB를이

Databasename = "exjobb" 
Collectioname = "cities"` 

처럼 보인다 그리고 데이터 30,000 행이 포함 , 그것은 내 레일 및 PHP 응용 프로그램과 함께 작동합니다. 당신이 사용해야 당신의 DB에있는 모든 도시를 얻고 싶다면 데이터베이스에서이

from django.db import models 
    from django.core.urlresolvers import reverse 
    from djangotoolbox.fields import ListField, EmbeddedModelField 

    # Create your models here. 
    class City(models.Model): 
     city = models.TextField() 
     loc = models.TextField() 
     population = models.IntegerField() 
     state = models.TextField() 
     _id = models.IntegerField() 

     def __unicode__(self): 
      return self.city 

그리고 하나의 행이

{ 
    "city" : "ACMAR", 
    "loc" : [ 
     -86.51557, 
     33.584132 
    ], 
    "population" : 6055, 
    "state" : "AL", 
    "_id" : "35004" 
} 
+0

"MongoDB와 장고를 함께 사용하려고합니다."그렇다면 왜 django-mongodb-engine과 같은 새로운 ORM **을 선택하겠습니까? djongo와 같은 [connector] (https://nesdis.github.io/djongo/integrating-django-with-mongodb/)를 사용하여 ** 기존 ** Django ORM을 MongoDB에 연결하지 않으시겠습니까? – nesdis

+0

Djongo는 제가 질문했을 때 존재하지 않았습니다. – JOSEFtw

답변

6

해결책을 찾았습니다. 문제는 내가 사용할 컬렉션을 선택하는 방법을 몰랐다는 것입니다. 따라서 Django는 "myAppName_cities"라는 새 컬렉션을 만들었습니다.

어떤 컬렉션을 사용할지를 django에 알려면 다음과 같은 메타 클래스를 추가하십시오.

class City(models.Model): 
    city = models.TextField() 
    loc = models.TextField() 
    population = models.IntegerField() 
    state = models.TextField() 
     #Specify collection in the MongoMetaclass 
    class MongoMeta: 
     db_table = "cities" 
0

모양처럼

내 모델 클래스 보인다

cities = City.objects.all() 

City.objects.get은 검색 할 키워드 인수가 필요하며 단일 레코드 만 반환합니다. 둘 이상의 예외를 발견하면 예외를 발생시킵니다.

+0

.all .all로 바꿨습니다. 이제는 오류가 없지만 도시는 비어 있습니다. len (도시) = 0,하지만 30 000이어야합니다 ... 레일과 비슷한 문제가 있었지만 레일스 시티 모델을 "도시"로 바꾸어야했습니다. – JOSEFtw

+0

제대로 호출하고 있습니까? github에서 코드를 살펴보면'get_all_cities' 함수에서이 라인을 볼 수 있습니다 :'cities = City.objects.all'. \t'cities = City.objects.all()'이어야합니다. 당신은 대괄호가 없어서 도시에 함수를 할당하고 있습니다 ... – aychedee

+0

City.objects.all()을 사용하고 있습니다 .Hitvent가 GitHub에 푸시되었습니다. – JOSEFtw

관련 문제