I am looking to create a form that displays a drop down menu with items specific to that user.
Please note my original code has no errors, I have summarised this one for simplicity.
So let's say I have a form like this:
html doc:
<form>
<p>Select a car:</p>
<p>{{ form.car_name }}</p>
</form>
My models look like this:
models.py
class LoggedInUser(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='logged_in_user',
on_delete=models.CASCADE)
session_key = models.CharField(max_length=32)
class Car(models.Model):
car_name = models.CharField(max-length=100)
car_owner = models.ForeignKey(LoggedInUser, on-delete=models.CASCADE)
class SavedCars(models.Model):
car_name = models.ForeignKey(Car, on-delete=models.CASCADE)
I then created the form class as such:
form.py
class CarSelect(forms.Modelform):
class Meta:
model = SavedCars
fields = [
'car_name',
]
As you can see, this current form setup gives me options to select ALL cars in that table even ones that are not assigned to a user. Which means on the form, every user can select any car. Not the desired result. I understand that a user has to be assigned a set of cars to choose from, so I tried this:
class LoggedInUser(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='logged_in_user',
on_delete=models.CASCADE)
session_key = models.CharField(max_length=32)
car_select = models.ManyToManyField(Car) // which detects the user selecting the car but this isn't my
form. :(
And this is obviously not possible:
class SavedCars(models.Model):
car_name = models.ForeignKey(Car.objects.filter(car_owner__user=request.user), on-delete=models.CASCADE)