在数据库 django 中用特殊字符定义特定数字的最佳方法是什么
What's the best way to define a particular number with special characters in a database django
我对 Django 模型字段有特定要求,基本上我想创建这种类型的系列:
0025-0007
本质上是 4 个整数字段,一个字符,然后是 4 个整数字段,我不需要随着数字的变化而自动递增,Django 中是否已经有任何可用的东西可以处理这些字段,最好是具有自动验证功能的东西?
@login_required
def close_lead(request):
if request.method == 'POST':
deal_form = NewDealForm(request.POST)
if deal_form.is_valid():
deal_form.save()
id = request.GET.get('project_id', '')
obj = Leads.objects.get(project_id=id)
obj.status = "Closed"
obj.save(update_fields=['status'])
## Changing the Forecast Table Entry
forecast = LeadEntry.objects.filter(lead_id=id)
for i in forecast:
m = i
m.stage = "Deal"
m.save(update_fields=['stage'])
messages.success(request, 'You have successfully updated the status from open to Close')
return HttpResponseRedirect(reverse('dashboard'))
else:
messages.error(request, 'Error updating your Form')
id = request.GET.get('project_id', '')
keys = Leads.objects.select_related().get(project_id=id)
form_dict = {'project_id': keys.project_id,
'agent': keys.agent,
'client': keys.point_of_contact,
'company': keys.company,
'service': keys.services,
'licenses': keys.expected_licenses,
'country_d': keys.country
}
form = NewDealForm(initial=form_dict)
return render(request,
"account/close_lead.html",
{'form': form})
## HTML
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block title %}Close Lead{% endblock %}
{% block content %}
<h1>Close a Lead</h1>
<div class="Myform">
<form method="post" id="close-lead">
{% csrf_token %}
<div class="row">
<div class="col-sm-6">
<div class="form-row">
<div class="form-group col-md-6">
{{ form.project_id|as_crispy_field }}
{{ form.agent|as_crispy_field }}
{{ form.sales_order|as_crispy_field }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
{{ form.company|as_crispy_field }}
{{ form.country_d|as_crispy_field }}
</div>
<div class="form-group col-md-6">
{{ form.client|as_crispy_field }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
{{ form.service|as_crispy_field }}
{{ form.revenue|as_crispy_field }}
{{ form.comments|as_crispy_field }}
</div>
<div class="form-group col-md-6">
{{ form.licenses|as_crispy_field }}
</div>
</div>
</div>
</div>
<input type="submit" value="Create Deal">
</form>
{% endblock %}
您可以定义验证器并使用 CharField
和 RegexValidator
[Django-doc]:
from django.db import models
from django.core.validators import RegexValidator
class MyModel(models.Model):
my_field = models.CharField(
max_length=9,
validators=[<strong>RegexValidator(</strong>r'\d{4}.\d{4}', 'The value should be four digits, a character and four digits'<strong>)</strong>]
)
如果四位数字之间的分隔符始终是连字符,则使用 r'\d{4}-\d{4}'
代替。
我对 Django 模型字段有特定要求,基本上我想创建这种类型的系列:
0025-0007
本质上是 4 个整数字段,一个字符,然后是 4 个整数字段,我不需要随着数字的变化而自动递增,Django 中是否已经有任何可用的东西可以处理这些字段,最好是具有自动验证功能的东西?
@login_required
def close_lead(request):
if request.method == 'POST':
deal_form = NewDealForm(request.POST)
if deal_form.is_valid():
deal_form.save()
id = request.GET.get('project_id', '')
obj = Leads.objects.get(project_id=id)
obj.status = "Closed"
obj.save(update_fields=['status'])
## Changing the Forecast Table Entry
forecast = LeadEntry.objects.filter(lead_id=id)
for i in forecast:
m = i
m.stage = "Deal"
m.save(update_fields=['stage'])
messages.success(request, 'You have successfully updated the status from open to Close')
return HttpResponseRedirect(reverse('dashboard'))
else:
messages.error(request, 'Error updating your Form')
id = request.GET.get('project_id', '')
keys = Leads.objects.select_related().get(project_id=id)
form_dict = {'project_id': keys.project_id,
'agent': keys.agent,
'client': keys.point_of_contact,
'company': keys.company,
'service': keys.services,
'licenses': keys.expected_licenses,
'country_d': keys.country
}
form = NewDealForm(initial=form_dict)
return render(request,
"account/close_lead.html",
{'form': form})
## HTML
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block title %}Close Lead{% endblock %}
{% block content %}
<h1>Close a Lead</h1>
<div class="Myform">
<form method="post" id="close-lead">
{% csrf_token %}
<div class="row">
<div class="col-sm-6">
<div class="form-row">
<div class="form-group col-md-6">
{{ form.project_id|as_crispy_field }}
{{ form.agent|as_crispy_field }}
{{ form.sales_order|as_crispy_field }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
{{ form.company|as_crispy_field }}
{{ form.country_d|as_crispy_field }}
</div>
<div class="form-group col-md-6">
{{ form.client|as_crispy_field }}
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
{{ form.service|as_crispy_field }}
{{ form.revenue|as_crispy_field }}
{{ form.comments|as_crispy_field }}
</div>
<div class="form-group col-md-6">
{{ form.licenses|as_crispy_field }}
</div>
</div>
</div>
</div>
<input type="submit" value="Create Deal">
</form>
{% endblock %}
您可以定义验证器并使用 CharField
和 RegexValidator
[Django-doc]:
from django.db import models
from django.core.validators import RegexValidator
class MyModel(models.Model):
my_field = models.CharField(
max_length=9,
validators=[<strong>RegexValidator(</strong>r'\d{4}.\d{4}', 'The value should be four digits, a character and four digits'<strong>)</strong>]
)
如果四位数字之间的分隔符始终是连字符,则使用 r'\d{4}-\d{4}'
代替。