Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.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
Python 如何在django crispy表单字段中预填充值_Python_Html_Django_Django Forms_Django Crispy Forms - Fatal编程技术网

Python 如何在django crispy表单字段中预填充值

Python 如何在django crispy表单字段中预填充值,python,html,django,django-forms,django-crispy-forms,Python,Html,Django,Django Forms,Django Crispy Forms,我正在尝试使用模型类forms.py创建一个create函数,然后使用django crispy forms包。表单已正确呈现,但我正在尝试排除特定字段,并使用当前用户电子邮件对其进行预填充。我已经能够在forme.py中排除它,但我不知道如何将当前用户的电子邮件添加到其中 models.py class Product(models.Model): name = models.CharField(max_length=36) price = models.PositiveInt

我正在尝试使用模型类forms.py创建一个create函数,然后使用django crispy forms包。表单已正确呈现,但我正在尝试排除特定字段,并使用当前用户电子邮件对其进行预填充。我已经能够在forme.py中排除它,但我不知道如何将当前用户的电子邮件添加到其中

models.py

class Product(models.Model):
    name = models.CharField(max_length=36)
    price = models.PositiveIntegerField()
    description = models.TextField()
    quantity = models.PositiveIntegerField()
    image = models.ImageField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.name
forms.py

from django import forms
from .models import *

class AddProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = '__all__'
        exclude = ['user']
views.py

def Addproduct(request):

    form = AddProductForm()
    if request.method == 'POST':
        form = AddProductForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            messages.success(request, "Products Added Successfully")
            return redirect('product')

    context = {"form":form}

    return render(request, "core/addproduct.html", context)
addproduct.html

<form method="post">
{% csrf_token %}
<div class="form-row">
  <div class="form-group col-md-4 mb-0">
    {{ form.name|as_crispy_field }}
  </div>
  <div class="form-group col-md-4 mb-0">
    {{ form.price|as_crispy_field }}
  </div>
  <div class="form-group col-md-4 mb-0">
    {{ form.quantity|as_crispy_field }}
  </div>
</div>
{{ form.description|as_crispy_field }}
<div class="form-row">
  <div class="form-group col-md-12 mb-0">
    {{ form.image|as_crispy_field }}
  </div>
</div>
<button class="au-btn au-btn--block au-btn--green m-b-20" type="submit">register supplier</button>
</form>

{%csrf_令牌%}
{{form.name}as_crispy_field}
{{form.price}as|u crispy_field}
{{form.quantity}as_crispy_field}
{{form.description}as|u crispy_field}
{{form.image}as_crispy_field}
注册供应商

在您的视图中,如果表单有效,只需将您想要的任何字段添加到
表单中即可。实例

def Addproduct(request): # Note function names should ideally be in snake_case

    form = AddProductForm()
    if request.method == 'POST':
        form = AddProductForm(request.POST, request.FILES)
        if form.is_valid():
            form.instance.user = request.user # Assuming you use login_required decorator so request.user would be a user instance (instead of anonymous user instance) if this line runs
            form.save()
            messages.success(request, "Products Added Successfully")
            return redirect('product')

    context = {"form":form}

    return render(request, "core/addproduct.html", context)

非常感谢,先生,这帮了大忙。