にテーブルに値を挿入することはできませんこれは私のコードです: models.pyform.is_validは()常にエラーを投げているとDjango
クラスSETUPTYPE(models.Model):
SET_UP_TYPES=(
('Dedicated', 'Dedicated'),
('Shared','Shared'),
)
SetUpType=models.CharField(max_length=10,choices=SET_UP_TYPES)
クラスSourceTool(models.Model):
SOURCE_TOOLS=(
('ServiceNow','ServiceNow'),
('HPSM','HPSM'),
('HPSAW','HPSAW'),
('Remedy', 'Remedy'),
('CA ServiceDesk','CA ServiceDesk'),
('EHelpline', 'EHelpline'),
('Microsoft SCSM','Microsoft SCSM'),
)
SourceToolName=models.CharField(max_length=30,choices=SOURCE_TOOLS)
クラスモジュール(models.Model):
ModuleName=models.CharField(max_length=30)
クラスDealSize(models.Model):
DEAL_SIZE=(
('<5 mn.','less than 5mn'),
('>5 mn.','greater than 5 million'),
)
DealSize=models.CharField(default="<5 mn",max_length=30,choices=DEAL_SIZE)
オポチュニティクラス
クラスオポチュニティ(models.Model)作成:
OppName=models.CharField(max_length=100)
SetUpType=models.ForeignKey(SetUpType,on_delete=models.CASCADE)
SourceTool=models.ForeignKey(SourceTool,on_delete=models.CASCADE)
NumOfUsers=models.IntegerField(blank=True)
NumOfTools=models.IntegerField(blank=True)
Modules=models.ForeignKey(Modules,on_delete=models.CASCADE)
DealSize=models.ForeignKey(DealSize,on_delete=models.CASCADE)
ContractTimeFrame=models.IntegerField(blank=True)
SupportMonths=models.IntegerField(blank=True)
Pricing=models.CharField(max_length=50)
RLS=models.CharField(max_length=50)
SETUPTYPE、すでにSourceTool、モジュールおよびDealSizeテーブルをデータを含み、これらのテーブルの対応するデータは、以下の形式の各フィールドのドロップダウンに表示されます:
forms.py:
クラスPreReqForm(forms.ModelForm):
MODULE_NAMES = (
('Incident Management', 'IM'),
('Requset for Service', 'SR'),
('Problem Management', 'PM'),
('Change Management', 'CM'),
)
OppName=forms.CharField(label="Opportunity Name")
setUpTypel1 = SetUpType.objects.all()
setUpTypel2 = [('-----', '-----'),]
for k in setUpTypel1:
setUpTypel2.append((k.SetUpType, k.SetUpType))
SetUpType=forms.ChoiceField(choices=setUpTypel2,label="Set-up Type")
sourceToolL1 = SourceTool.objects.all()
sourceToolL2 = [('-----', '-----'), ]
for m in sourceToolL1:
sourceToolL2.append((m.SourceToolName, m.SourceToolName))
SourceTool=forms.ChoiceField(choices=sourceToolL2,label="Source Tool")
NumOfUsers=forms.IntegerField(label="Number of Users")
NumOfTools=forms.IntegerField(label="Number of Tools")
Modules = forms.MultipleChoiceField(choices=MODULE_NAMES, widget=forms.SelectMultiple())
dealSizel1 = DealSize.objects.all()
#dUnique=dealSizel1.distinct('DealSize')
dealSizel2 = [('-----', '-----'), ]
for m in dealSizel1:
dealSizel2.append((m.DealSize, m.DealSize))
DealSize=forms.ChoiceField(choices=dealSizel2,label="Deal Size")
ContractTimeFrame=forms.IntegerField(label="Contract Time Frame",widget=forms.NumberInput(attrs={'placeholder': 'In Years'}))
#SupportMonths=forms.IntegerField(label="Support Months")
class Meta:
model = Opportunity
fields=('OppName','SetUpType','SourceTool','NumOfUsers','NumOfTools','Modules','DealSize','ContractTimeFrame',)
exclude = ('Pricing','RLS','SupportMonths')
Views.py:
がDEFプリフォーム(リクエスト):フォームの
if request.method == "POST":
form = PreReqForm(request.POST)
print request.method
print request.POST
print form.errors
#print request.POST.get['SetUpType']
if form.is_valid():
print "valid"
setuptype=SetUpType(SetUpType=request.POST.get['SetUpType'])
setuptype.save()
Opportunity.SetUpType=setuptype
Opportunity.save()
return redirect('preDetails')
else:
print "invalid"
else:
form = PreReqForm()
return render(request, "Prerequisites/PreReq1.html", {'form': form})
イメージ
フォームを提出した後、私は、コンソール上でこれを取得しています。エラーがある
POST:
ValueError: Cannot assign "u'Shared'": "Opportunity.SetUpType" must be a "SetUpType" instance. It is not printing form.errors and form.is_valid() also.
を助けてください。前もって感謝します。