2016-01-11 44 views
0

我想爲我的模型創建一個表單驗證。這是模型(沒有無用的代碼):ForeignKey。 「是一個無效的關鍵字參數爲這個功能」

class Card(models.Model): 
    link = models.URLField('lien vers le post', unique=True) 
    category = models.ForeignKey('Category', name='catégorie') 


class Category(models.Model): 
    name = models.CharField('nom', max_length=64, unique=True) 
    description = models.TextField('description', blank=True) 

而且這是我得到的錯誤(這是在我的views.py):

if form.is_valid(): 
    link = form.cleaned_data['link'] 
    category_id = form.cleaned_data['category'] 
    card = Card(link=link, vigil=request.user.profile, category=category_id) 
    card.save() 

確切的錯誤是:'category' is an invalid keyword argument for this function
當我在互聯網上搜索,我看到很多人有這個錯誤,但沒有與ForeignKey,但與ManyToMany字段。

+0

難道你已經取代了模型'Card'用不同的班?要檢查,添加'print(Card)'到你的視圖,以確保它是模型。 – Alasdair

+0

這是正確的課程:'' – Wizix

+0

你的表單是什麼? 'ModelForm'?如果是這樣,你可以做'form.save()',你不需要手動創建'Card'。 –

回答

1

而不是category = models.ForeignKey('Category', name='catégorie')

使用category = models.ForeignKey(Category, name='catégorie')

和創建卡嘗試時:

category = Category.objects.get(id=form.cleaned_data['category']) 
card = Card(link=link, vigil=request.user.profile, category=category) 

另外,還要確保你糾正你的模型的順序:首先定義到的第一類,那麼卡模型。

當你做到了這一點,在你的模型與verbose_name=...

希望這有助於更換name=...:d

+0

我得到'NameError:name'類別'未定義'它們在同一個文件中但是...... – Wizix

+0

在視圖中?你的進口是什麼? – crey4fun

+0

不,在模型中! 'category = models.ForeignKey(Category,name ='catégorie')'。我使用Django 1.9 ... – Wizix

相關問題