1
我有一個ModelChoiceField調用outage_name。我也有一個簡單的表單,允許您從列表中選擇項目。 ModelChoiceField是從MySQL DB中提取的。此查詢集位於forms.pyDjango匹配從ModelChoiceField到MySQL的外鍵
outage_name = forms.ModelChoiceField(queryset = Outage.objects.filter(published = True)
models.py列在下面。
from django.db import models
from django.contrib.auth.models import User
class Outage(models.Model):
outage_name = models.CharField(max_length=60, unique=True)
published = models.BooleanField()
def __unicode__(self):
return self.outage_name
class Detail(models.Model):
detail = models.CharField(max_length=60, unique=True)
user = models.ForeignKey(User)
outage = models.ForeignKey(Outage)
def __unicode__(self):
return self.outage
當我從列表中選擇並提交我似乎無法弄清楚如何搭配停運= models.ForeignKey(停運)這是清單上選擇的形式。到正確的outage_name。在我的views.py我可以硬編碼的ID,它提交給數據庫,一切工作正常。
def turnover_form(request):
if request.user.is_authenticated():
if request.method == 'POST':
form = TurnoverForm(request.POST)
if form.is_valid():
details = Detail.objects.get_or_create(
detail = form.cleaned_data['detail'],
user = request.user,
outage = Outage.objects.get(pk=1))
return HttpResponseRedirect('/turnover/user/')
else:
form = TurnoverForm()
variables = RequestContext(request, {'form': form})
return render_to_response('turnover_form.html', variables)
else:
return HttpResponseRedirect('/authorization/')
任何關於如何將id與所選項匹配的建議將不勝感激。我敢肯定,我的代碼不是非常pythonic,因爲我還在學習。
您的建議工作,我還必須在我的模型中添加'\'返回u'%d'%self.outage_name_id'。 – Dunwitch