我正在制作一个选举信息应用程序,我希望允许当前登录的用户能够在选举中宣布自己并且只有他自己作为候选人。
我正在使用 Django 的内置 ModelForm 和 CreateView。我的问题是 Run for Office 表单(换句话说,“创建候选人”表单)允许用户选择数据库中的任何用户来制作候选人。
我希望 Run for Office 中的用户字段自动设置为当前登录的用户,并隐藏此值,因此登录用户无法将该字段的值更改为其他人。
视图.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)
表格.py
class CandidateForm(forms.ModelForm):
class Meta:
model = Candidate
模型.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)})