2013-05-06 75 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") 
相關問題