Python Django+;蒙哥达

Python Django+;蒙哥达,python,django,mongodb,mongoengine,Python,Django,Mongodb,Mongoengine,我正在尝试与Django一起使用MongoDB。 我按照本指南进行了设置,以便安装所有必要的东西。 我的问题如下: 在我的views.py中尝试运行cities=City.objects.get()时,出现以下错误: DoesNotExist at /GetAllCities/ City matching query does not exist. 我的MongoDB看起来像这样 Databasename = "exjobb" Collectioname = "cities"`

我正在尝试与Django一起使用MongoDB。 我按照本指南进行了设置,以便安装所有必要的东西。 我的问题如下: 在我的
views.py
中尝试运行
cities=City.objects.get()
时,出现以下错误:

DoesNotExist at /GetAllCities/
        City matching query does not exist.
我的MongoDB看起来像这样

Databasename = "exjobb"
Collectioname = "cities"`
    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"
}
它包含30000行数据,与我的Rails和PHP应用程序一起使用

我的模型课看起来像这样

Databasename = "exjobb"
Collectioname = "cities"`
    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"
}
数据库中的一行是这样的

Databasename = "exjobb"
Collectioname = "cities"`
    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"
}

如果你想获得数据库中的所有城市,你应该使用

cities = City.objects.all()

City.objects.get
需要一个关键字参数来搜索,并且只返回一条记录。如果发现多个异常,则引发异常

我找到了解决办法。问题是我不知道如何选择要使用的收藏。因此,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"

我切换到。好了,现在我没有收到任何错误,但我的城市是空的。len(cities)=0,但它应该是30000…我对rails也有类似的问题,我不得不将我的rails城市模型重命名为“cities”…您正确地调用了它吗?通过查看github上的代码,我在
get_all_cities
函数中看到了这一行:
cities=City.objects.all
。它应该是
cities=City.objects.all()
。您缺少括号,因此只是将函数分配给城市…您的代码看起来是正确的。您如何将数据放入MongoDB?如果打开manage.py shell并使用它创建城市,会发生什么。然后可以检索它吗?我使用此脚本创建了数据库mongoimport--db exjobb--collection cities--file zips.json,当使用manage.py shell并尝试获取City.objects.all()时,我得到了“City未定义”在使用它之前需要导入
City
类。类似于exjobbap.exjobbApplication.models导入城市的
。导入城市后,可以使用
City.objects.create(City=“Paris”,loc=“France”)
创建城市记录。然后City.objects.all()应该返回一些内容。如果是这种情况,那就意味着您没有在脚本中正确添加数据。您的问题是:“尝试将MongoDB与Django一起使用”,那么为什么您希望选择像Django MongoDB引擎这样的新ORM呢?为什么不使用like djongo将现有的Django ORM连接到MongoDB?当我问这个问题时,djongo并不存在。