나는 장고에 대해 처음 접했고 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 : 나는 그/그녀가 관리자 인 지역에 새 에이전트를 추가하는 기존 에이전트의 양식을 구성하려면 어떻게합니까.
감사합니다,
맥심