I have 3 models:
class Node(models.Model):
ID = models.DecimalField(max_digits=19, decimal_places=10)
name = models.CharField(default='node', max_length=32)
connexion = models.CharField(max_length=255)
# Many2one fields | Foreign keys:
firm = models.ForeignKey('firme.Firme', on_delete=models.CASCADE, null=True, blank=True)
class ScheduledAction(models.Model):
date = models.DateTimeField(default=datetime.now, blank=True)
firm = models.ForeignKey('firme.Firme', on_delete=models.CASCADE, null=True, blank=True)
node_ids = models.ManyToManyField(Node)
I want in ScheduledAction form to show, for a selected firm, the list of its related nodes. Normally I should do this by get:
class ScheduledActionForm(forms.ModelForm):
date = forms.DateTimeField()
firm = forms.ModelChoiceField(queryset=Firme.objects.all())
node_ids = forms.ModelMultipleChoiceField(queryset=Node.objects.get(firm_id=firm.id), widget=forms.CheckboxSelectMultiple)
class Meta:
model = ScheduledAction
fields = [
'date',
'firm',
'node_ids'
]
This is my views.py:
def planification_view(request, id):
scheduledAction = ScheduledActionForm(request.POST or None)
firme = get_object_or_404(Firme, id=id)
nodes = Node.objects.all()
if scheduledAction.is_valid():
scheduledAction.save()
print('formulaire enregistre')
scheduledAction = ScheduledActionForm()
context = {
'firme': firme,
'form': scheduledAction,
'nodes': nodes
}
return render(request, "node/planification.html", context)
But I got this error:
AttributeError: 'ModelChoiceField' object has no attribute 'id'
How can I fix this?