【问题标题】:Django ModelForm not saving data to ModelDjango ModelForm 未将数据保存到模型
【发布时间】:2023-03-28 01:12:01
【问题描述】:

我为它创建了一个模型和相应的 ModelForm、视图和模板,但是即使使用了 .save() 函数,ModelForm 也不会将数据保存到模型中。 我已尝试查看表单和视图,但我不知道出了什么问题。我已在问题中发布了相应的模型、表单、视图和模板。

models.py:

class Centre(models.Model):
    Location = (
    ('rashmi_heights', 'Rashmi Heights Centre'),
    ('Levana', 'Levana Centre')
)

    name= models.CharField(max_length=50, blank=False, choices=Location, unique=True)
    address = models.CharField(max_length =250)
    contact = models.CharField(max_length=100, blank=False)
    phone = PhoneField(blank=True, help_text='Contact phone number')


    def __str__(self):
        return self.name

forms.py:

class CentreForm(forms.ModelForm):
    class Meta():
        model = Centre
        fields = '__all__'

views.py:

def centre(request):

    forms = CentreForm()

    if request.method == 'POST':
        forms = CentreForm(request.POST)

        if forms.is_valid():

            centre = forms.save(request.POST)
            centre.save()

        else:
            forms = CentreForm()

    return render(request,'NewApp/centreinfo.html',{'forms':forms})

模板:

<!DOCTYPE html>

{% extends 'NewApp/base.html' %}
{% load staticfiles %}
{% block body_block %}

<div class="jumbotron">

    <h2>Fill details about your centre.</h2><br>
    <h3> </h3>

    <form method="post" enctype="multipart/form-data">
        {{forms.as_p}}
        {% csrf_token %}
        <a class="btn btn-primary" href="{% url 'NewApp:centreinfo' %}">Submit</a>
    </form>

</div>

{% endblock %}

【问题讨论】:

    标签: python django django-models django-forms modelform


    【解决方案1】:
    forms.py:
    
    class CentreForm(forms.ModelForm):
        class Meta: -> change here
            model = Centre
            fields = '__all__'
    
    
    def centre(request):
        forms = CentreForm()
        if request.method == 'POST':
            forms = CentreForm(request.POST)
            if forms.is_valid():
                forms.save(request.POST)
            else:
                forms = CentreForm()
    
        return render(request,'NewApp/centreinfo.html',{'forms':forms})
    

    html

     <form method="post" enctype="multipart/form-data">
            {{forms.as_p}}
            {% csrf_token %}
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
    

    【讨论】:

    • 那行得通。但我真的不明白是什么问题。因为其他视图和表单似乎可以使用相同的语法正常工作。
    • 问题出在 Meta 而不是 Meta(),并且您在视图中保存了重复的条目
    • 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2018-10-10
    • 2013-08-19
    • 2020-07-11
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多