Я ищу, чтобы создать форму, которая отображает раскрывающееся меню с элементами, специфичными для этого пользователя.
Обратите внимание, что в моем исходном коде нет ошибок, для простоты я его обобщил.
Допустим, у меня есть такая форма:
html doc:
<form>
<p>Select a car:</p>
<p>{{ form.car_name }}</p>
</form>
Мои модели выглядят так:
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)
Затем я создал класс формы следующим образом:
form.py
class CarSelect(forms.Modelform):
class Meta:
model = SavedCars
fields = [
'car_name',
]
Как видите, эта текущая настройка формы дает мне возможность выбрать ВСЕ автомобили в этой таблице, даже те, которые не назначены пользователю. Что означает в форме, каждый пользователь может выбрать любой автомобиль. Не желаемый результат. Я понимаю, что пользователю должен быть назначен набор автомобилей на выбор, поэтому я попробовал это:
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. :(
И это, очевидно, невозможно:
class SavedCars(models.Model):
car_name = models.ForeignKey(Car.objects.filter(car_owner__user=request.user), on-delete=models.CASCADE)