簡體   English   中英

在manyToMany模型中的Django關系,對象沒有屬性

[英]Django relationship in manyToMany models, object has no attribute

我在M2M模型中建立關系時遇到問題。

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

表格

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

Procedure已存在。 我需要創建與過程相關的newECG 心電圖表格保存在數據庫中。 問題是當我想使用add()函數時。

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

ModelForm實例不具有在模型上定義的procedure屬性。 但是,由表單的save(...)方法返回的ECG模型實例確實具有它:

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

您只是忘記了一步:

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

我不明白為什么你嘗試添加IncomingProcedure.objectsfromviews.py

如果要將其保存在數據庫中,只需執行以下操作:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM