Как гласит заголовок, я не могу ограничить выбор поля формы в зависимости от конкретного пользователя.Например, при выборе для зарегистрированного поля формы все «гонщики» выбираются всеми «пользователями», а не только «гонщиками», которые «принадлежат» пользователю.
Я имеюпопробовал этот вопрос и ответ, который по существу задает тот же вопрос , а также некоторые другие возможные решения, которые имеют дело с полями модели m2m, limit_choices_to, но не увенчались успехом.
Любой совет будетс благодарностью.
models.py
class Event(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=200, null=True)
description = models.TextField(max_length=255, null=True, blank=True)
start = models.DateTimeField(null=True, blank=True)
end = models.DateTimeField(null=True, blank=True)
enrolled = models.ManyToManyField('riders.Rider',
related_name='events', blank=True)
def __str__(self):
return self.title
model.py (другое приложение)
class Rider(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
birthdate = models.DateField(verbose_name=None, auto_now=False)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.last_name + ', ' +self.first_name
views.py
@login_required
def enroll(request, event_id):
event = Event.objects.get(id=event_id)
if request.method != 'POST':
form = EventForm(instance=event)
else:
form = EventForm(instance=event, data=request.POST)
if form.is_valid():
enroll = form.save(commit=False)
enroll.save()
form.save_m2m()
return HttpResponseRedirect(reverse('riding_schedule:view_events'))
форм.py
class EventForm(forms.ModelForm):
class Meta:
model = Event
fields = ['title', 'start', 'end', 'enrolled']
labels = {'text':''}
widgets = {
'enrolled': forms.CheckboxSelectMultiple()
}