我遇到了这个问题,我的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
答案 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")