Построение моделей купонов
Начнем с создания модели Coupon. Измените файл models.py приложения coupons и добавьте в него следующий код:
from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator
class Coupon(models.Model):
code = models.CharField(max_length=50, unique=True)
valid_from = models.DateTimeField()
valid_to = models.DateTimeField()
discount = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
active = models.BooleanField()
def __str__(self):
return self.code
Это модель, которую мы собираемся использовать для хранения купонов. Модель Coupon содержит следующие поля:
- code : Код, который пользователи должны ввести для применения купона к покупке.
- valid_from : Значение datetime, указывающее, когда купон становится действительным.
- valid_to : Значение datetime, указывающее, когда купон становится недействительным.
- discount : Применяемая ставка дисконта (это процент, поэтому она принимает значения от 0 до 100). Средства проверки для этого поля используются для ограничения минимальных и максимальных допустимых значений.
- active : Логическое значение, указывающее, активен ли купон.
Выполните следующую команду, чтобы создать начальную миграцию для приложения купонов:
python manage.py makemigrations
Выходные данные должны включать следующие строки:
Migrations for 'coupons':
0001_initial.py:
- Create model Coupon
Затем мы выполняем следующую команду для применения миграции:
python manage.py migrate
Следует увидеть выходные данные, включающие следующую строку:
Applying coupons.0001_initial... OK
Миграция теперь применена в базе данных. Давайте добавим модель Coupon на сайт администрирования. Измените файл admin.py приложения coupons и добавьте в него следующий код:
from django.contrib import admin
from .models import Coupon
class CouponAdmin(admin.ModelAdmin):
list_display = ['code', 'valid_form', 'valid_to', 'discount', 'active']
list_filter = ['active', 'valid_form', 'valid_to']
search_fields = ['code']
admin.site.register(Coupon, CouponAdmin)
Модель Coupon теперь зарегистрирована на сайте администрирования. Откройте в браузере http://127.0.0.1:8000/admin/coupons/coupon/add/. Вы увидите следующую форму:
Заполните форму для создания нового купона, который действителен для текущей даты, убедитесь, что флажок Active установлен, и нажмите кнопку Сохранить.