2016-04-23 58 views
0

我在創建m2m模型中的關係時遇到了問題。Django關係在許多模型中,對象沒有屬性

models.py

class ECG(models.Model): 
    procedure= models.ManyToManyField('Procedure') 
    ... 
class Procedure(models.Model): 
    basic_info= models.IntegerField(default=0) 

views.py

def newECG(request, procedure_id): 
    if request.method == 'POST': 
     form = NewECG(request.POST) 
     if form.is_valid(): 
      form.save() 
      info = IncomingProcedure.objects.get(id=procedure_id) 
      form.procedure.add(info) #HERE IS A PROBLEM 
      return HttpResponseRedirect('/system/') 
    else: 
     form = NewECG() 
    return render(request, 'system/ecg.html', {'form': form}) 

forms.py

class NewECG(ModelForm): 
    class Meta: 
     model = ECG 
     exclude = ['procedure'] 
     # fields = '__all__' 
     fields = [ ... ] # rest fields, except procedure 

Procedure已經存在。我需要創建與程序有關的newECG。 ECG表格在db中保存。問題是當我想使用add()函數。

ERROR :'NewECG' object has no attribute 'procedure', exception location: views.py 

回答

0

你剛纔忘了一步:

def newECG(request, procedure_id): 
    if request.method == 'POST': 
     form = NewECG(request.POST) 
     if form.is_valid(): 
      ecg = form.save() 
      info = IncomingProcedure.objects.get(id=procedure_id) 
      ecg.procedure.add(info) #HERE IS A PROBLEM 
      return HttpResponseRedirect('/system/') 
1

ModelForm實例沒有被在模型中定義的屬性procedure。該ECG模型實例,但是,這是由窗體的save(...)方法返回,確實有它:

ecg_instance = form.save() 
info = IncomingProcedure.objects.get(id=procedure_id) 
# info = Procedure.objects.get(id=procedure_id) 
ecg_instance.procedure.add(info) 
0

我不明白你爲什麼想在views.py

添加IncomingProcedure.objectsfrom如果你想將它保存在數據庫上,應該簡單地做到這一點:

views.py

# ... Your codes: 
M = form.save() # save your class instance to M variable 
info = IncomingProcedure.objects.get(id=procedure_id) 
M.procedure.add(info) # save procedure instance to your object(An ECG model instance) 
相關問題