|
1 from datetime import datetime |
|
2 |
|
3 from django.contrib.auth.models import User |
|
4 from django.core import management |
|
5 from django.db import models |
|
6 |
|
7 |
|
8 # Forward declared intermediate model |
|
9 class Membership(models.Model): |
|
10 person = models.ForeignKey('Person') |
|
11 group = models.ForeignKey('Group') |
|
12 price = models.IntegerField(default=100) |
|
13 |
|
14 def __unicode__(self): |
|
15 return "%s is a member of %s" % (self.person.name, self.group.name) |
|
16 |
|
17 # using custom id column to test ticket #11107 |
|
18 class UserMembership(models.Model): |
|
19 id = models.AutoField(db_column='usermembership_id', primary_key=True) |
|
20 user = models.ForeignKey(User) |
|
21 group = models.ForeignKey('Group') |
|
22 price = models.IntegerField(default=100) |
|
23 |
|
24 def __unicode__(self): |
|
25 return "%s is a user and member of %s" % (self.user.username, self.group.name) |
|
26 |
|
27 class Person(models.Model): |
|
28 name = models.CharField(max_length=128) |
|
29 |
|
30 def __unicode__(self): |
|
31 return self.name |
|
32 |
|
33 class Group(models.Model): |
|
34 name = models.CharField(max_length=128) |
|
35 # Membership object defined as a class |
|
36 members = models.ManyToManyField(Person, through=Membership) |
|
37 user_members = models.ManyToManyField(User, through='UserMembership') |
|
38 |
|
39 def __unicode__(self): |
|
40 return self.name |
|
41 |
|
42 # A set of models that use an non-abstract inherited model as the 'through' model. |
|
43 class A(models.Model): |
|
44 a_text = models.CharField(max_length=20) |
|
45 |
|
46 class ThroughBase(models.Model): |
|
47 a = models.ForeignKey(A) |
|
48 b = models.ForeignKey('B') |
|
49 |
|
50 class Through(ThroughBase): |
|
51 extra = models.CharField(max_length=20) |
|
52 |
|
53 class B(models.Model): |
|
54 b_text = models.CharField(max_length=20) |
|
55 a_list = models.ManyToManyField(A, through=Through) |