2009-11-09 55 views
0

我是Django和編程的新手。我正在嘗試製作一個簡單的網站,讓運動的玩家註冊由管理員創建的聯賽。在我的models.py,我創建了兩個模型:使用通用視圖將模型相互關聯

from django.db import models 
from django.forms import ModelForm 

class League(models.Model): 
    league_name = models.CharField(max_length=100) 
    pub_date = models.DateTimeField('date published') 

class Info(models.Model): 
    league = models.ManyToManyField(League) 
    name = models.CharField(max_length=50) 
    phone = models.IntegerField() 
    email = models.EmailField() 
    def __unicode__(self): 
     return self.info 

class InfoForm (ModelForm): 
    class Meta: 
     model = Info 
     exclude = ('league') 

從我讀過,我也許可以使用創建/更新/刪除通用視圖來顯示的形式爲用戶報名參加聯賽。因此,通過我的應用程序,我希望用戶來到一個列出聯賽的簡單主頁,能夠點擊聯盟並輸入他們的信息進行註冊。下面是我的URL配置是這樣的:

from django.conf.urls.defaults import * 
from mysite.player_info.models import League, Info, InfoForm 

info_dict = { 
    'queryset': League.objects.all(), 
} 

InfoForm = {'form_class' : InfoForm} 

urlpatterns = patterns('', 
    (r'^$', 'django.views.generic.list_detail.object_list', info_dict), 
    (r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict), 
    url(r'^(?P<object_id>\d+)/results/$', 'django.views.generic.list_detail.object_detail', dict(info_dict, template_name='player_info/results.html'), 'league_results'), 
    (r'^(?P<object_id>\d+)/info/create/$', 'django.views.generic.create_update.create_object', InfoForm), 
) 

這裏是我的問題:當我在聯賽中點擊註冊,以我目前的設置網頁,我得到這個錯誤:TypeError at /league/1/info/create.... create_object() got an unexpected keyword argument 'object_id'。我究竟做錯了什麼?

回答

0

問題不在於你的模型,而在於你的「創建」URL調用函數 - urls.py中調用django.views.generic.create_update.create_object()的行。 create_object()不需要參數object_id,但是您在url中指定了一個參數(r'^(?P<object_id>\d+)/info/create/$')。這是有道理的 - 你正在創建一個對象,所以你不知道它的ID。 create_object()只需要form_classmodel參數,如docs中所述。

我猜你想創建一個連接到League對象的Info對象,並在該網址,<object_id>League對象的ID號;在這種情況下,您不應指定該ID號碼,而應該僅使用r"^\d+/info/create/$"作爲URL。不過,我不確定如何使用Django的create_object()函數獲取聯盟ID號碼。您可能必須編寫自己的視圖處理程序。您可能可以使用自定義ModelForm並將其傳入form_class參數,但我不確定。

相關問題