Django và stackoverflow noob tại đây. Tôi đang tạo một ứng dụng thông tin bầu cử và tôi muốn cho phép người dùng hiện đã đăng nhập có thể tự tuyên bố mình là và chỉ mình là ứng viên trong cuộc bầu cử.Ở Django, làm cách nào để đặt trường người dùng thành biểu mẫu cho người dùng hiện đã đăng nhập?
Tôi đang sử dụng Modelango và CreateView tích hợp sẵn của Django. Vấn đề của tôi là biểu mẫu Run for Office (nói cách khác, biểu mẫu 'tạo ứng viên') cho phép người dùng chọn bất kỳ người dùng nào trong cơ sở dữ liệu để tạo một ứng cử viên.
Tôi muốn trường người dùng trong Run for Office được đặt tự động cho người dùng hiện đã đăng nhập và để giá trị này bị ẩn, vì vậy người dùng đã đăng nhập không thể thay đổi giá trị của trường cho người khác .
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)})
Cảm ơn bạn đã đọc. Tôi đã bị mắc kẹt về vấn đề này một vài ngày nay, và sẽ thực sự đánh giá cao sự giúp đỡ của bạn. Nếu bạn cần thêm thông tin, xin vui lòng cho tôi biết.
Dang, thật dễ dàng. Tôi đã thử những thứ như "candidate.user = self.request.user" trước đây, nhưng rõ ràng là nó không hoạt động. Điều này sẽ có ích cho các hình thức khác tôi phải thực hiện, cảm ơn rất nhiều! –
Tại sao ứng cử viên.user = self.request.user không hoạt động? Không phải self.request.user cũng là một đối tượng người dùng? – tilaprimera
Vì self.request.user là cá thể User, nhưng Candidate.user là cá thể UserProfile. –