ここではDjangoとstackoverflow noobがあります。私は選挙情報アプリを作っています。現在ログインしているユーザーが自分でと宣言し、選挙の候補者として自分自身をとすることができるようにしたいと考えています。Djangoでは、現在ログインしているユーザーのフォームにユーザーフィールドを設定するにはどうすればよいですか?
私はDjangoに組み込まれているModelFormとCreateViewを使用しています。私の問題は、Office for Runフォーム(言い換えれば、 '候補の作成'フォーム)は、ユーザがユーザを選択して候補者にすることができることです。
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)})
感謝。私はこの問題を数日間してしまいました。あなたの助けに本当に感謝しています。もっと情報が必要な場合は、ご指摘ください。レンダリングされたフォームから
ダン、それは簡単でした。以前は "candidate.user = self.request.user"のようなものを試していましたが、明らかにそれはうまくいきません。これは、私が作る必要がある他のフォームのために便利です、ありがとう! –
candidate.user = self.request.userが動作しないのはなぜですか? self.request.userもユーザオブジェクトではありませんか? – tilaprimera
self.request.userはUserインスタンスですが、Candidate.userはUserProfileインスタンスです。 –