Django Match ForeignKey из ModelChoiceField в MySQL - PullRequest
1 голос
/ 26 сентября 2011

У меня есть ModelChoiceField с именем имя_отключения .У меня также есть простая форма, которая позволяет выбрать элемент из списка.ModelChoiceField извлекается из БД MySQL.Этот набор запросов находится в forms.py

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

Когда я выбираю из списка и отправляю форму, мне кажется, что я не могувыяснить, как сопоставить outage = models.ForeignKey (Outage) , который был выбран в списке.На правильный имя_отключения .В моем views.py я могу жестко запрограммировать идентификатор, и он отправляется в базу данных, и все работает отлично.

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

Буду признателен за любые советы о том, как сопоставить идентификатор с выбранным элементом.Я уверен, что мой код не очень питоничен, так как я все еще учусь.

1 Ответ

1 голос
/ 26 сентября 2011
outage = form.cleaned_data['outage'] # cleaned_data['outage'] is a model instance
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...