Django's built in authentication system requires the username to be alpha-numeric only. Therefore, email addresses are invalid. However, in many cases, you would like to use an email address as the username. This snippet allows you to do so. It has the added benefit that if you want to continue using the regular username format, you can do that too. It's the best of both worlds!
To make sure propoer credit is given, this code is modified from a django group posting from Vasily Sulatskov.
To use this file, save it in your project as something like: email-auth.py
Then, add the following lines to your settings.py file:
AUTHENTICATION_BACKENDS = (
'yourproject.email-auth.EmailBackend',
)
You can see a full implementation [here] (http://www.satchmoproject.com/trac/browser/satchmo/trunk/satchmo)
A more simple version of [https://djangosnippets.org/snippets/1688/](https://djangosnippets.org/snippets/1688/), inheriting from `SelectDateWidget`, overriding only the necessarily.
**Usage example:**
**In models.py:**
from django.db import models
from django.utils.translation import gettext_lazy as _
class MyModel(models.Model):
start = models.DateField(
_("Start date"),
)
end = models.DateField(
_("End date"),
)
class Meta:
verbose_name = _("My model")
**In forms.py:**
from django import forms
from .models import MyModel
from .widgets import MonthYearWidget
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
exclude = []
widgets = {
"start": MonthYearWidget(),
"end": MonthYearWidget(last_day=True),
}
**kwargs:**
- *last_day :* if set to `True`, returns the last day of the month in the generated date.
- widgets
- select
- year
- month
- SelectDateWidget