Я действительно новичок в django, и у меня есть несколько вопросов о том, как работает django M2M и как он работает с 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?
-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: Как создать форму для существующего агента, чтобы добавить нового агента в регионы, где он / она является менеджером.
Спасибо
Максим