2014-01-23 95 views
0

有類似的帖子,像this one,但他們都沒有回答我的問題。我正在嘗試使用ModelForms向Django中的ManyToMany字段添加內容,但我一直收到錯誤消息。我的代碼看起來是這樣的:Django ManyToMany字段返回錯誤「對象沒有屬性」

models.py:

class LineSection(models.Model): 
    ... 
class Line(models.Model): 
    line_id = models.IntegerField() 
    ... 
    sections = models.ManyToManyField(LineSection) 
class LineForm(ModelForm): 
    class Meta: 
     model = Line 
     fields = [...,'sections'] 

views.py:

partialLine = Line(user=1001) 
line = LineForm(request.POST.copy(), instance=partialLine) 
... 
newSect = Section(sect_id=sectId, 
    point_list=sect['point_list'], 
    ...) 
try: 
    newSect.save() 
    line.sections.add(newSect) 
except Exception as e: ... 

我得到的錯誤:

'LineForm' object has no attribute 'sections'.

任何想法?

回答

0

這是因爲錯誤說:lineLineForm的一個實例,而不是Line。您需要保存的表單對象在某些時候得到實際的更新模型實例:

line_obj = line.save() 

雖然你也許應該重新命名混亂line對象。

+0

謝謝!我認爲這是有效的。 (是的,我的項目中的變量名稱是不同的,但我認爲沒有上下文這些可能會更容易......我猜不是) – roboguy222

+0

我必須在'add()'後面執行'line_obj.save() ? – roboguy222

+0

不,因爲添加僅影響穿透表格,而不影響線條實例本身。 –

相關問題