Tutorials¶
The pages in this section of the documentation are aimed at the newcomer. They’re designed to help you get started quickly, and show how easy it is to work with it as a developer who wants to customise it and get it working according to their own requirements.
Installation¶
pip install django-fancy-cronfield
Basic usage¶
Use it like any regular model field:
from django.db import models
from fancy_cronfield.fields import CronField
class MyModel(models.Model):
timing = CronField()
Field Options¶
Django fancy cronfield extend Field, so all options available at Field can be used with CronField as well. Here is a list of kwargs which CronField has added or altered:
- max_length: is set to 120 by default, however you can override it at will.
- daily_limit: Specifies maximum value which cron frequency per day can be. None means no limit.
Please see Fields for an inside look into CronField.
Widget Options¶
Django fancy cronfield comes with a useful custom widget which provides a
gentle select UI for specifying cron strings at administration panel. However
you can customize the widget UI behaviour by passing options dictionary to
CronWidget
constructor.
For example, if you want to customize the CronWidget
for the timing
CronField
of Schedule
to use <select> instead of the default gentle
select, you can override the field’s widget and pass your desired options:
from django import forms
from fancy_cronfield.widgets import CronWidget
from myapp.models import Schedule
class ScheduleForm(forms.ModelForm):
class Meta:
model = Schedule
fields = ('name', 'timing')
widgets = {
'timing': CronWidget(
attrs={'class': 'special'},
options={'use_gentle_select': True}
),
}
Note
Please note that options parameter differs from attrs which is used to specify html attributes. options are limited to a list of predefined items which are described below.
Here are the list of options that you can use to customize UI behaviour:
-
use_gentle_select
¶ Default: True
means using gentle select UI by defaultBoolean that determines if the widget should use gentle select UI or simple select input.
-
allow_multiple_all
¶ Default: False
Boolean that decides if the widget should allow multiple selection on all cron parts. When this is True, the user can select multiple values for each cron part. False meant that cron parts are not forced to allow multiple selection, and each cron part’s individual option will decide about the behaviour.
-
allow_multiple_dom
¶ Default: True
Boolean that decides if the widget should allow multiple selection on day of month cron part.
-
allow_multiple_month
¶ Default: True
Boolean that decides if the widget should allow multiple selection on month cron part.
-
allow_multiple_dow
¶ Default: True
Boolean that decides if the widget should allow multiple selection on day of week cron part.
-
allow_multiple_hour
¶ Default: True
Boolean that decides if the widget should allow multiple selection on hour cron part.
-
allow_multiple_minute
¶ Default: True
Boolean that decides if the widget should allow multiple selection on minute cron part.
Below you can find an example options dictionary, these options indicates that the widget should use gentle select to render itself, allow multiple selection on day of month, month and day of week. However multiple selection is not allowed for hour and minute part.
Example:
options = {
'use_gentle_select': True,
'allow_multiple_all': False,
'allow_multiple_dom': True,
'allow_multiple_month': True,
'allow_multiple_dow': True,
'allow_multiple_hour': False,
'allow_multiple_minute': False
}
Note
There might be a case where you need to use the default TextInput
widget instead of CronWidget
. It could easily be done by overriding
the field’s widget in ModelForm.
Please see Widgets for an inside look into CronWidget.