2011-02-13 6 views
0

나는 장고에 대해 처음 접했고 django의 M2M 작동 방식과 modelForm 또는 forms에서 작동하는 방법에 대해 몇 가지 질문을 가지고있다. 현재 다음 모델을 포함하는 응용 프로그램에서 작업 중이다.django manytomany와 modelform

class Agent(models.Model): 
    user = models.ForeignKey(User) 
    assigned_by = models.ForeignKey('self') 
    date = models.DateField(auto_now_add=True) 

    def __str__(self): 
     return str(self.user) 

class Region(models.Model): 
    name = models.CharField(max_length=50) 


# Agent to Region many-to-many 
class ARM2M(models.Model): 
    agent = models.ForeignKey(Agent) 
    region = models.ForeignKey(Region) 
    is_manager = models.BooleanField(default=False) 

제약 : 는 에이전트가 여러 지역에서 할 수 있으며, 그/그녀가 그/그녀가에 그 지역의 어떤에서 관리자 중 하나가 될 수 있습니다

질문 # 1 :.이 django 모델에서 many-to-many 기능으로 그러한 논리를 표현하는 방법?

-end-의-질문 # 1 ~

그래서 그/그녀의 지역에 새 에이전트를 추가 할 수있는 에이전트 관리자에 대한이 AgentForm 있습니다. 그러나이 양식은 작동하지 않는다는 것을 알고 있습니다 : MultipleChoiceField에서 현재 로그온 한 에이전트를 가져 와서 사용 가능한 영역을 표시 할 방법이 없기 때문입니다. 즉, 나는 붙어있다.

class AgentForm(forms.Form): 
    agent = forms.IntegerField(widget=forms.HiddenInput()) 
    regions = forms.MultipleChoiceField(choices=RAM2M.objects.filter(agent=agent, is_manager=True)) 

    def save(self): 
     agent_id = self.cleaned_data['assigned_by'] 
     agent = Agent.objects.get(pk=int(agent_id)) 
     self.instance.assigned_by = agent 
     super(AgentForm, self).save() 

    class Meta: 
     model=Agent 
     exclude = ('assigned_by') 

질문 # 2 : 나는 그/그녀가 관리자 인 지역에 새 에이전트를 추가하는 기존 에이전트의 양식을 구성하려면 어떻게합니까.

감사합니다,

맥심

답변

관련 문제