2011-03-24 83 views
0

從我讀過的所有內容看來,這應該只是工作,但事實並非如此。通過管理器訪問Django自定義模型返回空集

我有一個自定義模式:

from django.db import models 
from django.contrib.auth.models import * 

class Feed(models.Model): 
    user = models.ForeignKey(User, blank=True, null=True) 
    link = models.CharField(max_length=200) 
    startDate = models.CharField(max_length=8) 
    endDate = models.CharField(max_length=8) 

    def __unicode__(self): 
     return str(self.id) 

    def __init__(self, link, sDate, eDate, user=None): 
     super(Feed, self).__init__() 
     self.link = link 
     self.startDate = sDate 
     self.endDate = eDate 
     self.user = user 

而且我還使用包含在「django.contrib.auth.models」的用戶模型。

當我創建一個Feed時,例如

feed = Feed(link, sDate, eDate) 
feed.save() 

(或類似一個與指定的用戶)似乎將其存儲在數據庫中(我得到它的PK,其不斷遞增),但'Feed.objects.all()返回一個空列表。想篩選由現有的PK也將返回一個空的列表,並試圖獲得()現有的PK給了我下面的錯誤

TypeError: __init__() takes at most 5 arguments (6 given) 

看着我應該如何retrieving objects from custom models,看來我所做的一切,我應該,但顯然不是這樣的...

回答

2

哇。

你爲什麼壓倒你模特的__init__?很少有很好的理由這樣做,如果你這樣做,你必須絕對保持接口相同 - 因爲每當django從db中獲取一個模型時就會調用__init__(這就是爲什麼當你遇到錯誤時請致電.get()

你希望用你的__init__完成什麼?

你或許應該只是刪除您__init__然後你可以創建對象飼料正常,Django的方式:

feed = Feed(link=link, startDate=sDate, endDate=eDate) 

該行將創建所需的正確的進給的對象。

+0

謝謝,這是做到了。如果我記得正確的話,我們得到了一個錯誤,我們通過覆蓋__init__來解決這個錯誤,但是這個錯誤或者是其他問題或者現在不是問題,您的解決方案似乎已經修復了它:)再次感謝。 – bdeniker 2011-03-24 14:52:30

0

您是否嘗試過命名參數,例如

feed = Feed(link=link, startDate=sDate, endDate=eDate) 

你是怎麼用get()的?還應該有命名的參數使用,例如:

Feed.objects.get(pk=6) 
+0

我剛剛嘗試命名參數,仍然相同。是的,這就是我已經試過得到的,但我得到了提到的錯誤。 – bdeniker 2011-03-24 14:46:30

相關問題