Django初学者在这里。说我有以下型号:
class Mom(models.Model):
name = models.CharField(max_length=25)
class Dad(models.Model):
name = models.CharField(max_length=25)
class Child(models.Model):
name = models.CharField(max_length=25, unique=True)
mom = models.ForeignKey(Mom)
dad = models.ForeignKey(Dad)
现在说我有一个表格,我可以选择妈妈和爸爸的组合,我想生成他们在一起的孩子的清单。
class ChildChooser(forms.ModelForm):
class Meta:
model = Child
fields = ['mom', 'dad']
所以我定义了一个视图:
def myChildChooserView(request):
if request.method=='POST':
form=ChildChooser(request.POST)
if form.is_valid():
myMom=form.cleaned_data['mom']
myDad=form.cleaned_data['dad']
return HttpResponseRedirect(reverse('kid-list', kwargs={'mom':myMom,
'dad':myDad} ))
else:
form = RawYarnChooser()
return render(request, 'chooser.html', {'form':form})
我希望可以利用我定义的网址:
url(r'^kids/(?P<mom>[0-9]+)/(?P<dad>[0-9]+)/$',views.kidList, name='kid-list'),
问题是网址需要“妈妈”的主键。和爸爸&#39;在表格上选择。表单返回选择的文本。什么是pythonic方式从表单上的选择中获取主键号,以便我可以将它们提供给Http Response Redirect的kwargs?
我提出的解决方案是(在视图中)用以下内容ping数据库:
mom_for_kwargs=Mom.objects.get(name=myMom)
dad_for_kwargs=Dad.objects.get(name=myDad)
然后从那些获取id。但这似乎是一种非常迂回的方式。只是想知道是否有更好的方法。
谢谢!
答案 0 :(得分:1)
这应该只是> sub("\\..*$","",mydata$Gene)
[1] "ENSG00000000419" "ENSG00000000460"
>
- kwargs={'mom': myMom.id, 'dad': myDad.id}
模型字段的默认表单字段类型是ForeignKey
,它应该从ModelChoiceField
返回一个模型实例。