有没有一种方法可以在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()
这提供了一个保存了所有空白值的模型。
答案 0 :(得分:0)
要进行验证,您必须使用django.forms。 django表单将管理验证部分:
例如:如果您的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>