2016-04-23 28 views
0

m2mモデルで関係を作成する際に問題があります。多くのToManyモデルで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

は、あなただけのステップを忘れてしまいましたあなたのデータベースに保存したい場合は、単にこれを行う必要があり、あなたのfrom

views.py 内にIncomingProcedure.objectsを追加します。

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) 
1

ModelFormインスタンスは、モデルで定義されprocedure属性がありません。 ECGモデルインスタンスは、しかし、フォームのsave(...)メソッドによって返される、それを持っています:あなたがしようとしている理由

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/') 
0

は、私が理解することはできません。

ecg_instance = form.save() 
info = IncomingProcedure.objects.get(id=procedure_id) 
# info = Procedure.objects.get(id=procedure_id) 
ecg_instance.procedure.add(info) 
関連する問題