Django のクラスベースの UpdateView では、ユーザー フィールドはシステムの内部にあるため除外し、要求しません。ユーザーをフォームに渡す適切なDjangoの方法は何ですか。(私が今それを行う方法は、ユーザーをフォームのinitに渡し、フォームのsave()メソッドをオーバーライドすることです。しかし、これを行う適切な方法があると確信しています。隠しフィールドまたはそのようなもの自然。
# models.py
class Entry(models.Model):
user = models.ForeignKey(
User,
related_name="%(class)s",
null=False
)
name = models.CharField(
blank=False,
max_length=58,
)
is_active = models.BooleanField(default=False)
class Meta:
ordering = ['name',]
def __unicode__(self):
return u'%s' % self.name
# forms.py
class EntryForm(forms.ModelForm):
class Meta:
model = Entry
exclude = ('user',)
# views.py
class UpdateEntry(UpdateView):
model = Entry
form_class = EntryForm
template_name = "entry/entry_update.html"
success_url = reverse_lazy('entry_update')
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(UpdateEntry, self).dispatch(*args, **kwargs)
# urls.py
url(r'^entry/edit/(?P<pk>\d+)/$',
UpdateEntry.as_view(),
name='entry_update'
),