Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 将记录的用户配置文件模型发送到CreateView表单_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Django 将记录的用户配置文件模型发送到CreateView表单

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

我试图完成的是使用登录用户将“请求者”模型发送到表单

我遇到的主要问题是views.py“class CreateOrderView(CreateView)”没有参数“request”,因此我无法获取request.user,因此无法获取requester_obj,并在进入此页面时在表单字段“requester”中自动选择此requester_obj

型号.py订单:

    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?