【问题标题】:django model Form data not getting saved to databasedjango模型表单数据没有保存到数据库
【发布时间】:2021-05-03 05:12:57
【问题描述】:

我正在尝试将表单数据保存到数据库,但它没有被保存。我也没有收到任何错误。这是我的 form.py:

def create_lead(request):
    form = LeadForm()
    if request.method == 'POST':
        form = LeadForm(request.POST)
        print(form.data)
        if form.is_valid():
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']
            age = form.cleaned_data['age']
            city = form.cleaned_data['city']
            country = form.cleaned_data['country']
            email = form.cleaned_data['email']
            status = form.cleaned_data['status']
            agent = form.cleaned_data['agent']
            avatar = form.cleaned_data['avatar']
            lead = Lead(
                first_name=first_name,
                last_name=last_name,
                age=age,
                city=city,
                country=country,
                email=email,
                status=status,
                agent=agent,
                avatar=avatar
            )
            lead.save()
        return redirect('/all')
    return render(request, 'create.html', {'form': LeadForm})

我什至尝试直接创建一个模型,如下所述:HTML form data not saved in database - django,但没有帮助。

def create_lead(request):
    form = LeadForm()
    if request.method == 'POST':
        form = LeadForm(request.POST)
        print(form.data)
        if form.is_valid():
            first_name = form.cleaned_data['first_name']
            last_name = form.cleaned_data['last_name']
            age = form.cleaned_data['age']
            city = form.cleaned_data['city']
            country = form.cleaned_data['country']
            email = form.cleaned_data['email']
            status = form.cleaned_data['status']
            agent = form.cleaned_data['agent']
            avatar = form.cleaned_data['avatar']
            Lead.objects.create(
                first_name=first_name,
                last_name=last_name,
                age=age,
                city=city,
                country=country,
                email=email,
                status=status,
                agent=agent,
                avatar=avatar
            )
        return redirect('/all')
    return render(request, 'create.html', {'form': LeadForm})

这是我的forms.py:

class LeadForm(forms.ModelForm):
    class Meta: 
        model = Lead
        fields = '__all__'

这是模型:

class Lead(models.Model):
    lead_status = (
        ('Potential', 'Potential'),
        ('Prospect', 'Prospect'),
        ('Negotiation', 'Negotiation'),
        ('Converted', 'Converted'),
        ('Failed', 'Failed')
    )

    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    age = models.IntegerField(default=0)
    city = models.CharField(max_length=25, null=True)
    country = models.CharField(max_length=30, null=True)
    email = models.EmailField(max_length=50, null=True)
    agent = models.ForeignKey('Agent', on_delete=models.CASCADE, null=True)
    status = models.CharField(max_length=15, choices=lead_status, null=True)
    avatar = models.ImageField(null=True, upload_to='media')

    def __str__(self):
        return self.first_name

这里是 HTML

<form method="POST" action="." enctype="multipart/form-data">
    {% csrf_token %}
    {{form.as_p}}
    <button type="submit">Submit</button>
</form>

【问题讨论】:

    标签: django django-models django-views django-forms django-templates


    【解决方案1】:

    您正在保存一个文件,因此您还必须将request.FILES 添加到您的表单中。

    form = LeadForm(request.POST, request.FILES)

    【讨论】:

      猜你喜欢
      • 2021-06-28
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 2017-03-06
      • 1970-01-01
      • 2021-01-27
      相关资源
      最近更新 更多