首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django防止保存空模型

django防止保存空模型
EN

Stack Overflow用户
提问于 2018-11-21 22:32:44
回答 1查看 101关注 0票数 0

有没有一种方法可以在django中停止模型,允许保存空模型?

例如,我有一张简单的联系人表格

代码语言:javascript
复制
class Contact(models.Model):

alphabetical = RegexValidator(r'^[a-zA-Z]*$', 'Only alphabetical characters 
are allowed', 'Invalid input')

name = models.CharField(max_length=200, validators=[alphabetical])
email = models.EmailField(validators=[EmailValidator, ])
subject = models.CharField(max_length=200)
message = models.CharField(max_length=250)
created_date = models.DateTimeField(auto_now_add=True)

如何防止保存空模型?例如,在django shell中,我可以

代码语言:javascript
复制
contact = Contact()
contact.save()

这将提供一个保存了所有空白值的模型。

EN

回答 1

Stack Overflow用户

发布于 2018-11-21 22:52:50

对于验证,您必须使用django.forms。django表单将管理验证部分:

例如:如果你的model.py是:

代码语言:javascript
复制
class Contact(models.Model):

    name = models.CharField(max_length=200)
    email = models.EmailField()
    subject = models.CharField(max_length=200)
    message = models.CharField(max_length=250)
    created_date = models.DateTimeField(auto_now_add=True)

现在在views.py中创建一个视图:

代码语言:javascript
复制
from django.forms import modelformset_factory
from django.shortcuts import render
from myapp.models import Contact

def manage_contacts(request):
    ContactFormSet = modelformset_factory(Contact, fields=('name', 'email', 'subject', 'message'))
    if request.method == 'POST':
        formset = ContactFormSet(request.POST)
        if formset.is_valid(): # check the validation for blank fields
            formset.save()
            # do something.
    else:
        formset = ContactFormSet()
    return render(request, 'manage_contacts.html', {'formset': formset})

templates/manage_contacts.html中创建模板

代码语言:javascript
复制
<form method="post">
    {{ formset }}
</form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53414365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档