从 django 中的自定义 html 表单保存和更新数据

时间:2021-02-13 19:38:10

标签: django django-models django-forms

我为我的模型创建了一个自定义 HTML 表单,就像我想从前端添加一个帖子一样。我已经创建了一个名为 add-post.html

的页面
    <form method="POST" action="">
    {% csrf_token %}
        <input name="title" type="text">
        <textarea spellcheck="false" name="description"></textarea>
        <input type="file" name="image" @change="fileName" multiple />
        <select required name="priority">
           <option value="Low" selected>Low</option>
           <option value="Medium">Medium</option>
           <option value="High">High</option>
        </select>
        <input type="checkbox" name="on_hold">
        <button type="submit">Add ToDo</button>
    </form>

这是我的 model.py

class Todo(models.Model):
    title = models.CharField(max_length=100)
    image = models.ImageField(null=True, blank=True, upload_to='todo/images/')
    description = RichTextField()
    Low, Medium, High = 'Low', 'Medium', 'High'
    priorities = [
        (Low, 'Low'),
        (Medium, 'Medium'),
        (High, 'High'),
    ]
    priority = models.CharField(
        max_length=50,
        choices=priorities,
        default=Low,
    )
    on_hold = models.BooleanField(default=False)

不,我想使用上面的自定义 HTML 表单发布数据并将其保存到此模型数据库中。而不是使用 {% form.as_p %}

而且我还创建了一个特定页面来从前端更新这篇文章,但不知道如何使其工作。

能否请您指导我如何保存自定义表单中的数据并从自定义表单中更新数据? 感谢您的回复:)

2 个答案:

答案 0 :(得分:0)

@Mubasher Rehman - 你快到了

forms.py

class TodoCreationForm(forms.ModelForm):
    class Meta:
        model = Todo
        fields = ('title','image','description','priorities','priority','on_hold',)

views.py

  from django.contrib.messages.views import SuccessMessageMixin
    from django.views.generic import CreateView

class CreatProduct(SuccessMessageMixin,CreateView):
    model = Todo
    form_class = TodoCreationForm
    template_name = "add_post.html"
    success_message = "Todo was created successfully"
    error_message = "Error saving the Todo, check fields below."

add_post.html

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

答案 1 :(得分:0)

@Mubasher Rehman - 我自己解决了这个问题一段时间,最后找到了解决方案。我的情况与你的大不相同,但试试这个:

在您的 views.py 中像这样覆盖 form_valid 方法:

r'(?i)\W*plasti\W*'
相关问题