如何将django中的不同字段名称映射到mongo字段

时间:2013-05-06 00:55:21

标签: django mongodb

我遇到了这个问题,我的mongo数据库有一个字段“type”,这是Python中的保留字。我如何在Django中设置它以便Django知道我指的是字段输入mongo,但没有遇到错误? 非常感谢!

# mongo object
payment: {
    user = ObjectId("..."),
    date: ISODate("2013-05-05T23:21:22.802Z"),
    type: "downgrade"
    }

# django 
class Payment(models.Model):
    user = models.ForeignKey(..)
    date = models.DateTimeField(default=datetime.datetime.now, null=False)    
    type = models.CharField(blank=False, max_length=30) # <== cannot use type

2 个答案:

答案 0 :(得分:2)

您可以使用db_column field option指定数据库中使用的类型。您需要在Payment模型中使用未保留的单词,但指定db_column字段选项将在mongo中使用正确的类型。例如:

class Payment(models.Model):
    user = models.ForeignKey(..)
    date = models.DateTimeField(default=datetime.datetime.now, null=False)    
    pay_type = models.CharField(blank=False, max_length=30, db_column="type") 

答案 1 :(得分:0)

如果您使用的是Mongo Engine,db_column将不适合您。

您应该使用http://docs.mongoengine.org/guide/defining-documents.html#field-arguments

中指定的db_field指定它

您的样本将以:

结束
class Payment(models.Model):
    user = models.ForeignKey(..)
    date = models.DateTimeField(default=datetime.datetime.now, null=False)    
    pay_type = models.CharField(blank=False, max_length=30, db_field ="type")