-
Notifications
You must be signed in to change notification settings - Fork 2
/
README
53 lines (36 loc) · 1.52 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
django-filch
========
``django-filch`` allows you to de-normalize data in Django models in a simple way. Add
``filch`` to your ``INSTALLED_APPS`` then all you have to do is add a field to the model
that you want to contain de-normalized data.
Right now ``django-flich`` only contains a field that will store in the database a json
serialized copy of many-to-many data. When the field is accessed it will automatically
convert the data in the database to normal python.
DenormManyToManyField(from_field, attrs)
=====================
from_field: ``string``. Name of the ``ManyToManyField`` on the same model that you want
to de-normalize.
attrs: ``list, tuple, string, or callable``. Attrs should be attributes of the model used in the
many-to-many. If a string is provided it will be converted to a list for you. If you provide a
callable it will be passed an ``instance`` of the model and should return a dict of attributes
and values.
from django.db import models
from filch.fields import DenormManyToManyField
class Group(models.Model):
name = models.CharField(max_length=50)
class Person(models.Model):
name = models.CharField(max_length=50)
groups = models.ManyToManyField(Group)
group_list = DenormManyToManyField('groups', ('name',))
person = Person.objects.create(name='sean')
group = Group.obejcts.create(name='PyChi')
person.groups.add(group)
person.group_list
[{'name': 'PyChi'}]
group.name = 'Djangonauts'
group.save()
person.group_list
[{'name': 'Djangonauts'}]
person.groups.remove(group)
person.group_list
[]