Я создаю приложение с информацией о выборах и хочу, чтобы вошедший в систему пользователь мог объявить себя и только себя как кандидата на выборах.
Я использую встроенные в Django ModelForm и CreateView. Моя проблема в том, что форма "Выполнить для Office" (другими словами, форма "создать кандидата") позволяет пользователю выбрать любого пользователя в базе данных, чтобы сделать кандидата.
Я хочу, чтобы поле пользователя в Run for Office было автоматически установлено для текущего пользователя, вошедшего в систему, и чтобы это значение было скрыто, чтобы вошедший в систему пользователь не мог изменить значение поля на кого-либо другого.
views.py
class CandidateCreateView(CreateView):
model = Candidate
form_class = CandidateForm
template_name = 'candidate_create.html'
def form_valid(self, form):
f = form.save(commit=False)
f.save()
return super(CandidateCreateView, self).form_valid(form)
forms.py
class CandidateForm(forms.ModelForm):
class Meta:
model = Candidate
models.py
class Candidate(models.Model):
user = models.ForeignKey(UserProfile)
office = models.ForeignKey(Office)
election = models.ForeignKey(Election)
description = models.TextField()
def __unicode__(self):
return unicode(self.user)
def get_absolute_url(self):
return reverse('candidate_detail', kwargs={'pk': str(self.id)})