How to get a user from a Modelform

13 views
Skip to first unread message

Annick Sakoua

unread,
Sep 2, 2020, 11:32:17 AM9/2/20
to Django users
Hi all,

I have a model from which I had a form. I would like to show in the form a MultipleChoiceField: customer that shows only the user's customers.
Nothing show in the MultipleChoiceField. I don't know how to succed to get the user in my form. Please help. Thanks a lot

models.py

class Customer(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="customer", null=True)

class RiskAssessment(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name="riskassessment", null=True)

models.py

class AddRiskAssessment(forms.ModelForm):

class Meta:
model = RiskAssessment
fields = '__all__'

def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(AddRiskAssessment, self).__init__(*args, **kwargs)
self.fields['customer'] = forms.ModelChoiceField(queryset=Customer.objects.filter(author=user))


views.py

def add_riskassessment(request):
if request.method == 'POST':
form = AddRiskAssessment(request.POST, user=request.user)
if form.is_valid():
form.save()
messages.success(request, f'Your form has been created!')
return redirect('addriskassessment')
else:
form = AddRiskAssessment()
return render(request, 'app/addriskassessment.html', {'form': form})
Reply all
Reply to author
Forward
0 new messages