有没有一种方法可以在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()这将提供一个保存了所有空白值的模型。
发布于 2018-11-21 22:52:50
对于验证,您必须使用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>https://stackoverflow.com/questions/53414365
复制相似问题