mirror of
https://github.com/jazzband/django-eav2.git
synced 2026-03-16 22:40:26 +00:00
70 lines
1.5 KiB
Python
70 lines
1.5 KiB
Python
|
|
from django.db import models
|
||
|
|
|
||
|
|
from eav.decorators import register_eav
|
||
|
|
from eav.models import EAVModelMeta
|
||
|
|
|
||
|
|
|
||
|
|
class TestBase(models.Model):
|
||
|
|
"""Base class for test models."""
|
||
|
|
|
||
|
|
class Meta(object):
|
||
|
|
"""Define common options."""
|
||
|
|
|
||
|
|
app_label = 'test_project'
|
||
|
|
abstract = True
|
||
|
|
|
||
|
|
|
||
|
|
class Patient(TestBase):
|
||
|
|
name = models.CharField(max_length=12)
|
||
|
|
example = models.ForeignKey(
|
||
|
|
'ExampleModel', null=True, blank=True, on_delete=models.PROTECT
|
||
|
|
)
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return self.name
|
||
|
|
|
||
|
|
def __repr__(self):
|
||
|
|
return self.name
|
||
|
|
|
||
|
|
|
||
|
|
class Encounter(TestBase):
|
||
|
|
num = models.PositiveSmallIntegerField()
|
||
|
|
patient = models.ForeignKey(Patient, on_delete=models.PROTECT)
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return '%s: encounter num %d' % (self.patient, self.num)
|
||
|
|
|
||
|
|
def __repr__(self):
|
||
|
|
return self.name
|
||
|
|
|
||
|
|
|
||
|
|
@register_eav()
|
||
|
|
class ExampleModel(TestBase):
|
||
|
|
name = models.CharField(max_length=12)
|
||
|
|
|
||
|
|
def __unicode__(self):
|
||
|
|
return self.name
|
||
|
|
|
||
|
|
|
||
|
|
@register_eav()
|
||
|
|
class M2MModel(TestBase):
|
||
|
|
name = models.CharField(max_length=12)
|
||
|
|
models = models.ManyToManyField(ExampleModel)
|
||
|
|
|
||
|
|
def __unicode__(self):
|
||
|
|
return self.name
|
||
|
|
|
||
|
|
|
||
|
|
class ExampleMetaclassModel(TestBase, metaclass=EAVModelMeta):
|
||
|
|
name = models.CharField(max_length=12)
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return self.name
|
||
|
|
|
||
|
|
|
||
|
|
class RegisterTestModel(TestBase, metaclass=EAVModelMeta):
|
||
|
|
name = models.CharField(max_length=12)
|
||
|
|
|
||
|
|
def __str__(self):
|
||
|
|
return self.name
|