![](/img/trans.png)
[英]How to get currently logged user id in form model in Django 1.7?
[英]How to pass the currently logged in user as default to a form
如何将当前登录的用户作为默认值传递给表单?
我希望表单被当前用户预先填充,但同时允许用户对其进行更改(例如,为另一个用户添加客户)。
这是我的模型:
class Customer (models.Model):
shortname = models.CharField(max_length=30)
name = models.CharField(max_length=50, blank=True)
[...]
user = models.ForeignKey(User)
nextstep = models.DateField(auto_now=False, auto_now_add=False, default=(date.today() + timedelta(days=10)))
def due_in(self):
due_time = self.nextstep - date.today()
overdue = due_time.days < 0
return {'days': abs(due_time.days), 'overdue': overdue}
def get_absolute_url(self):
"""Absolute URL des Partners"""
return reverse('kundencenter:partner_detail', kwargs={'pk': self.pk}, current_app='kundencenter')
和我的形式:
class CustomerForm(forms.ModelForm):
class Meta:
model = Customer
fields = [
"shortname",
"name",
[...]
"user",
]
labels = {
"shortname": 'Customer Shortname',
"name": 'Full Name',
}
我的看法是:
class CustomerCreateView(SuccessMessageMixin, CreateView):
"""Adds a new customer."""
model = Customer
template_name = 'customercenter/generic_new.html'
form_class = CustomerForm
success_message = "Customer %(name)s added."
扩展Arpit Solanki的答案,您可以添加/覆盖get_initial
方法,因为您使用的是基于类的视图:
def get_initial(self):
initial_data = super(CustomerCreateView, self).get_initial()
initial_data.update({'user':self.request.user})
return initial_data
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.