Django 将记录的用户配置文件模型发送到CreateView表单
我试图完成的是使用登录用户将“请求者”模型发送到表单 我遇到的主要问题是views.py“class CreateOrderView(CreateView)”没有参数“request”,因此我无法获取request.user,因此无法获取requester_obj,并在进入此页面时在表单字段“requester”中自动选择此requester_obj 型号.py订单:Django 将记录的用户配置文件模型发送到CreateView表单,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我试图完成的是使用登录用户将“请求者”模型发送到表单 我遇到的主要问题是views.py“class CreateOrderView(CreateView)”没有参数“request”,因此我无法获取request.user,因此无法获取requester_obj,并在进入此页面时在表单字段“requester”中自动选择此requester_obj 型号.py订单: DEFAULT_REQUESTER_ID= 1 requester = models.ForeignKey(Pr
DEFAULT_REQUESTER_ID= 1
requester = models.ForeignKey(Profile, on_delete=models.CASCADE, default=DEFAULT_REQUESTER_ID, verbose_name="usuario")
forms.py:
class OrderCreateForm(BaseForm, forms.ModelForm):
date = forms.DateField(label="Fecha" , widget=forms.DateInput(attrs={'type': 'date'}))
class Meta:
model = Order
fields = ['requester','title' , 'date', ]
views.py:
@method_decorator(staff_member_required, name='dispatch')
class CreateOrderView(CreateView):
template_name = 'form.html'
form_class = OrderCreateForm
model = Order
def get_success_url(self):
self.new_object.refresh_from_db()
return reverse('update_order', kwargs={'pk': self.new_object.id})
def form_valid(self, form):
object = form.save()
object.refresh_from_db()
self.new_object = object
return super().form_valid(form)
我得到的请求者是这样的:
@login_required
def create(request):
#return render(request, 'app_client/create.html')
if request.method == 'POST':
if request.POST['value'] and request.POST['products']:
logged_user = request.user
user_obj = get_object_or_404(User, username=logged_user)
requestor_obj = get_object_or_404(Profile, user=user_obj)
..我刚刚找到了解决问题的方法 我所做的是删除forms.py中的“requester”字段,并在用户按下submitform按钮后将requester obj发送到表单
def form_valid(self, form):
logged_user = self.request.user
user_obj = get_object_or_404(User, username=logged_user)
requester_obj = get_object_or_404(Profile, user=user_obj)
form.instance.requestor = requestor_obj
object = form.save()
object.refresh_from_db()
self.new_object = object
return super().form_valid(form)
form.instance.requestor=requestor_obj是我在保存前需要发送到表单的行
ref:您是否正在尝试从基于函数的视图迁移到基于类的视图?有点像。我尝试的是自动选择表单字段“requester”,这意味着获取当前登录的用户(request.user),或者找到另一种方法在基于类的视图中获取request.user并将其发送到表单字段。您是否可以在is_valid方法中使用self.request.user?