ADD: данные записываются в БД

This commit is contained in:
e-serg 2024-04-14 22:07:43 +03:00
parent b449e6f4d9
commit 92aa867e0f
4 changed files with 53 additions and 15 deletions

View File

@ -31,6 +31,8 @@ body {
font-size: 11pt;
color: #fff;
}
/* ЛОГО НА ГЛАВНОЙ СТРАНИЦЕ (и других тоже) */
#index-logo {
font-family: "Lobster", sans-serif;
font-weight: 400;

View File

@ -34,16 +34,17 @@ class TbPetsClones(models.Model):
szPetName = models.CharField(
max_length=64,
verbose_name="Имя образца",
help_text='Имя исходного биологического объекта, с которого изготовлен клон'
help_text="Имя исходного биологического объекта, с которого изготовлен клон"
)
szPetSerNum = models.CharField(
max_length=25,
max_length=27,
db_index=True,
unique=True,
null=True,
blank=True,
verbose_name="Серийный номер клонированного питомца",
help_text='Можно не заполнять. Номер будет сгенерирован автоматически'
verbose_name="Серийный номер",
help_text="Серийный номер клонированного питомца<br />"
"Можно не заполнять. Номер будет сгенерирован автоматически"
)
iPetSex = models.SmallIntegerField(
default=PetSex.UN,
@ -60,7 +61,8 @@ class TbPetsClones(models.Model):
max_length=64,
null=True,
blank=True,
verbose_name="Владелец клонированного питомца"
verbose_name="Владелец",
help_text="Владелец клонированного питомца"
)
szPetPrice = models.DecimalField(
max_digits=10,
@ -68,7 +70,8 @@ class TbPetsClones(models.Model):
default=random.randint(1000, 10000),
null=True,
blank=True,
verbose_name="Цена клонированного питомца"
verbose_name="Цена",
help_text="Цена клонированного питомца (в рублях)"
)
szPetComment = models.TextField(
null=True,
@ -77,6 +80,12 @@ class TbPetsClones(models.Model):
help_text='Дополнительная информация о клоне'
)
bPetIsReg = models.BooleanField(
default=True,
db_index=True,
verbose_name="Регистрация",
help_text="Поставьте галочку, если клон нужно зарегистрировать в Минсельхозе и Министерстве здравоохранения"
)
dtPetCreate = models.DateTimeField(
auto_now_add=True, # надо указать False при миграции, после вернуть в True
# для выполнения миграций нужно добавлять default, а после она не нужна
@ -99,10 +108,10 @@ class TbPetsClones(models.Model):
# если имя не задано, то генерируем его
self.szPetName = (f"{chr(random.randint(65, 90))}"
f"{chr(random.randint(65, 90))}"
f"{chr(random.randint(65, 90))}")
f"{chr(random.randint(65, 90))}-anonymous")
if not self.pk:
# если объект новый, то генерируем серийный номер
self.szPetSerNum = (f"{pytils.translit.slugify(self.szPetName)[:3].upper()}"
self.szPetSerNum = (f"{str(pytils.translit.slugify(self.szPetName)[:3].upper())}"
f"-{self.iPetType:02d}"
f"-{self.iPetSex:02d}"
f"-{now().strftime('%y%m%d-%H%M%S')}"

View File

@ -82,13 +82,31 @@ def save_clone(request: HttpRequest) -> HttpResponse:
:return response: исходящий http-ответ
"""
to_template = {
"META_REFRESH": "2; url=/add-clone", # автоматический
"META_REFRESH": "2; url=/add-clone", # автоматическое перенаправление на новую регистрацию через 2 секунды
}
if request.method == 'POST':
try:
print(request.POST['pay'])
print(request.POST)
except KeyError:
pay = request.POST.get('pay')
pet_type = request.POST.get('type')
pet_sex = request.POST.get('sex')
pet_is_alive = True if 'is-alive' in request.POST else False
pet_reg = False if 'noreg' in request.POST else True
pet_name = request.POST.get('name')
pet_note = request.POST.get('note')
pet_owner = None if request.POST.get('owner') == "" else request.POST.get('owner')
pet = TbPetsClones(
iPetType=int(pet_type),
szPetName=pet_name,
iPetSex=int(pet_sex),
bPetIsAlive=pet_is_alive,
szPetOwner=pet_owner,
szPetPrice=int(pay),
szPetComment=pet_note,
bPetIsReg=pet_reg
)
pet.save()
except (KeyError, ValueError, TypeError):
return HttpResponseRedirect('/add-clone')
return render(request, template_name="save_data.jinja", context=to_template)

View File

@ -29,7 +29,7 @@
</div>
</div>
<div class="col-6">
<div class="col-4">
<div class="input-group mb-3">
<span class="input-group-text" id="basic-addon1"><i class="fa-solid fa-paw"></i></span>
<input type="text" class="form-control" placeholder="имя питомца с которого сделан клон" aria-label="name"
@ -37,10 +37,19 @@
</div>
</div>
<div class="col-5">
<div class="input-group mb-3">
<span class="input-group-text" id="basic-addon1"><i class="fa-solid fa-person"></i></span>
<input type="text" class="form-control" placeholder="заказчик (хозяин питомца)" aria-label="owner"
name="owner">
</div>
</div>
<div class="col-9">
<div class="input-group mb-3">
<span class="input-group-text" id="basic-addon1"><i class="fa-solid fa-comment mb-5 pb-5"></i></span>
<textarea class="form-control" aria-label="note" rows="6" name="note"></textarea>
<textarea class="form-control" aria-label="note" rows="6" placeholder="заметки"
name="note"></textarea>
</div>
</div>
@ -55,7 +64,7 @@
<div class="col-3">
<div class="form-check pt-3 mb-3">
<input class="form-check-input" type="checkbox" value="1" id="reg">
<input class="form-check-input" type="checkbox" value="1" id="noreg" name="noreg">
<label class="form-check-label" for="flexCheckDefault">
Без регистрации
</label>