2017-09-15 21 views
0

私はこれと同様のモデル持っている私は 中間の多対多フィールドを通してフィールドを照会する方法は?

を持って何ジャンゴ1.8とPython 2

を使用します。

from django import forms 
from ceres.persons.models import Person, PersonUnitRelType, Unit 

class MForm(forms.Form): 
    persons = forms.ModelMultipleChoiceField(Person.objects) 
    units = forms.ModelMultipleChoiceField(Unit.objects) 
    relations = forms.ModelMultipleChoiceField(PersonUnitRelType.objects) 
:私はこれに似た形を持っている

from django.db.models import Model 

class Person(Model): 
    name = models.CharField() 

class Unit(Model): 
    unit_name = models.CharField() 

class PersonUnitRelType(Model): 
    relation=models.CharField() 

class PersonUnitRelation(Model): 
    person = models.ForeignKey(Person) 
    unit = models.ForeignKey(Unit) 

私はこのようなビューを持っています:

from django.http import HttpResponseRedirect 
from django.shortcuts import render 

from .forms import MessageForm 
from ceres.persons.models import Person, PersonUnitRelType, Unit 

def messages(request): 
    if request.method == 'POST': 
     form = MessageForm(request.POST) 
     if form.is_valid(): 
      persons = form.cleaned_data['persons'] 
      persons_list = [p.name for p in persons] 

      relations = form.cleaned_data['relations'] 
      for relation in relations: 
       #TODO: Add all persons in 'relation' to persons_list 

      units = form.cleaned_data['units'] 
      for unit in units: 
       #TODO: Add all persons in a unit witch have a 'relation' to persons_list. 
      return HttpResponseRedirect("./") 
    else: 
     form = MForm() 

    context = { 
     'form': form 
    } 

    return render(request, 'foo.html', context) 

私が欲しいもの

人物の名前を直接、関係、またはユニットの魔法使いに関係なく選択してリストに追加したいと思います。これどうやってするの?

答えて

0

だから、これは私が追加したコードです:

 relations = form.cleaned_data['relations'] 
     for relation in relations: 
      unit_persons = Person.objects.filter(personunitrelation__unit=relation) 
      for unit_person in unit_persons: 
       persons_list = [p.name for p in persons] 

     units = form.cleaned_data['units'] 
     for unit in units: 
      relation_persons = Person.objects.filter(personunitrelation__PersonUnitRelType=relation) 
      for relation_person in relation_persons: 
       persons_list = [p.name for p in persons] 
関連する問題