2013-05-06 78 views
0

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

您可以使用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") 
+0

啊,那是真棒:

你应该使用它作为db_field在http://docs.mongoengine.org/guide/defining-documents.html#field-arguments

你的样品指定将结束作为指定。非常感谢Talvalin! – msunbot 2013-05-06 01:11:34

0

如果您使用的是Mongo Engine,则db_column不适用于您。

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") 
相关问题