django防止保存空模型



有没有办法停止django中的模型,允许保存空模型?

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

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中,我可以进行

contact = Contact()
contact.save()

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

要进行验证,必须使用django.forms。django forms将管理验证部分:

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

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:中创建一个视图

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:中创建模板

<form method="post">
{{ formset }}
</form>

最新更新