~ubuntu-branches/debian/sid/python-django/sid

« back to all changes in this revision

Viewing changes to tests/modeltests/m2m_through/models.py

  • Committer: Package Import Robot
  • Author(s): Luke Faraone
  • Date: 2013-11-07 15:33:49 UTC
  • mfrom: (1.3.12)
  • Revision ID: package-import@ubuntu.com-20131107153349-e31sc149l2szs3jb
Tags: 1.6-1
* New upstream version. Closes: #557474, #724637.
* python-django now also suggests the installation of ipython,
  bpython, python-django-doc, and libgdal1.
  Closes: #636511, #686333, #704203
* Set package maintainer to Debian Python Modules Team.
* Bump standards version to 3.9.5, no changes needed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from datetime import datetime
2
 
 
3
 
from django.db import models
4
 
from django.utils.encoding import python_2_unicode_compatible
5
 
 
6
 
 
7
 
# M2M described on one of the models
8
 
@python_2_unicode_compatible
9
 
class Person(models.Model):
10
 
    name = models.CharField(max_length=128)
11
 
 
12
 
    class Meta:
13
 
        ordering = ('name',)
14
 
 
15
 
    def __str__(self):
16
 
        return self.name
17
 
 
18
 
@python_2_unicode_compatible
19
 
class Group(models.Model):
20
 
    name = models.CharField(max_length=128)
21
 
    members = models.ManyToManyField(Person, through='Membership')
22
 
    custom_members = models.ManyToManyField(Person, through='CustomMembership', related_name="custom")
23
 
    nodefaultsnonulls = models.ManyToManyField(Person, through='TestNoDefaultsOrNulls', related_name="testnodefaultsnonulls")
24
 
 
25
 
    class Meta:
26
 
        ordering = ('name',)
27
 
 
28
 
    def __str__(self):
29
 
        return self.name
30
 
 
31
 
@python_2_unicode_compatible
32
 
class Membership(models.Model):
33
 
    person = models.ForeignKey(Person)
34
 
    group = models.ForeignKey(Group)
35
 
    date_joined = models.DateTimeField(default=datetime.now)
36
 
    invite_reason = models.CharField(max_length=64, null=True)
37
 
 
38
 
    class Meta:
39
 
        ordering = ('date_joined', 'invite_reason', 'group')
40
 
 
41
 
    def __str__(self):
42
 
        return "%s is a member of %s" % (self.person.name, self.group.name)
43
 
 
44
 
@python_2_unicode_compatible
45
 
class CustomMembership(models.Model):
46
 
    person = models.ForeignKey(Person, db_column="custom_person_column", related_name="custom_person_related_name")
47
 
    group = models.ForeignKey(Group)
48
 
    weird_fk = models.ForeignKey(Membership, null=True)
49
 
    date_joined = models.DateTimeField(default=datetime.now)
50
 
 
51
 
    def __str__(self):
52
 
        return "%s is a member of %s" % (self.person.name, self.group.name)
53
 
 
54
 
    class Meta:
55
 
        db_table = "test_table"
56
 
 
57
 
class TestNoDefaultsOrNulls(models.Model):
58
 
    person = models.ForeignKey(Person)
59
 
    group = models.ForeignKey(Group)
60
 
    nodefaultnonull = models.CharField(max_length=5)
61
 
 
62
 
@python_2_unicode_compatible
63
 
class PersonSelfRefM2M(models.Model):
64
 
    name = models.CharField(max_length=5)
65
 
    friends = models.ManyToManyField('self', through="Friendship", symmetrical=False)
66
 
 
67
 
    def __str__(self):
68
 
        return self.name
69
 
 
70
 
class Friendship(models.Model):
71
 
    first = models.ForeignKey(PersonSelfRefM2M, related_name="rel_from_set")
72
 
    second = models.ForeignKey(PersonSelfRefM2M, related_name="rel_to_set")
73
 
    date_friended = models.DateTimeField()