2013-03-10 57 views
0

我在尋找通過「ObjectId」得到字段的方法如何找到django中的「ObjectId」mongodb的字段?

但是,我沒有找到。

我decleared項模型

class Entries(models.Model): 
    subject = models.CharField(max_length=120, null=False) 
    content = models.TextField(null=False) 
    created = models.DateTimeField(auto_now_add=True, auto_now=True) 
    writer = models.CharField(max_length=30, null=False) 


@csrf_exempt 
def viewPost(request, entry_number): # ex) entry_number = '513c780210ae920f58762d3d' 
    e = Entries.objects.get(id = entry_number) # error!! 
    return HttpResponse('zz') 

它的代碼會引發錯誤,因此我試圖在代碼。

e = Entries.objects.get(_id = entry_number) # error!! 
e = Entries.objects.get(pk = entry_number) # error!! 
e = Entries.objects.get(id = entry_number) # error!! 
e = Entries.objects.get(_id = ObjectId(entry_number)) # error!! 
e = Entries.objects.get(pk = ObjectId(entry_number)) # error!! 
e = Entries.objects.get(id = ObjectId(entry_number)) # error!! 
e = Entries.objects(id = entry_number) # error!! 

它給我的消息

'invalid literal for int() with base 10: '513c780210ae920f58762d3d', ... 

因此,我現在用的pymongo(不Django的ORM)

d = entries_table.find_one({'_id' : ObjectId(entry_number)}) 
return render_to_response('view.html', {'ROOT_URL':ROOT_URL, 
             'entry':d, 'id':d['_id']}) 

有人幫助我使用

+0

你得到那個錯誤,因爲id只允許數字(int)。你有沒有看到你的輸入值= 513c780210ae920f58762d3d,它有字母 – catherine 2013-03-10 13:57:40

+0

是的,我知道。但是,我想通過objectid – geeeek 2013-03-10 14:38:39

+0

得到好吧我會嘗試搜索關於objectId – catherine 2013-03-10 14:47:18

回答

0

Django的ORM沒有按現在不支持MongoDB。改用PyMongo。

+0

爲什麼「save()」方法不正確的工作? – geeeek 2013-03-10 14:32:18