6. C
om
in
# yourapp/routers.py
g
so
class MasterSlaveRouter(object):
on
def db_for_read(model, instance=None):
!
return random.choice(['slave1', 'slave2'])
def db_for_write(model, instance=None):
return 'master'
# settings.py
DATABASE_ROUTERS = ['path.to.MasterSlaveRouter']
8. >>> Person.objects.raw('SELECT * FROM authors')
[<Person: Phillip Roth>, <Person: Robert A. Wilson>, ...]
>>> Person.objects.raw('SELECT id, first_name, "Joe" AS last_name FROM authors')
[<Person: Joe Roth>, <Person: Joe A. Wilson>, ...]
>>> people = Person.objects.raw('SELECT *, age(birth_date) AS age FROM authors')
>>> for p in people:
... print "%s is %s." % (p.first_name, p.age)
Phillip is 78.
Robert is 102.
...
10. from django.core.exceptions import ValidationError
def is_even(value):
if value % 2 != 0:
raise ValidationError("%s is not an even number." % value)
...
class MyModel(models.Model):
even = models.IntegerField(validators=[is_even])
...
class MyForm(forms.Form):
even = forms.IntegerField(validators=[is_even])