Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # coding=utf-8
- from django.db import models
- from django.contrib.postgres.fields import JSONField
- from django_vises.model_base import ModelBaseObject
- __all__ = ['AbstractGeneralObject', 'GeneralObject']
- class GeneralObjectManager(models.Manager):
- def set_value(self, group, key=None, value=None):
- """set|create/update"""
- if key is None:
- key = group
- obj = self.get_queryset_by_group_and_key(group=group, key=key).first()
- if obj is None:
- obj = GeneralObject(
- group=group,
- key=key,
- value=value
- )
- else:
- obj.value = value
- obj.save()
- return obj
- def get_value(self, group, key=None):
- """get value"""
- if key is None:
- key = group
- obj = self.get_queryset_by_group_and_key(group=group, key=key).first()
- if obj is None:
- return None
- return obj.value
- def get_object(self, group, key=None):
- """get object"""
- return self.get_queryset_by_group_and_key(group=group, key=key).first()
- def get_queryset_by_group_and_key(self, group, key=None):
- """get queryset"""
- if key is None:
- return self.get_queryset().filter(group=group)
- else:
- return self.get_queryset().filter(group=group, key=key)
- class AbstractGeneralObject(ModelBaseObject):
- """An abstract base class implementing for GeneralOption"""
- group = models.CharField(
- # 分类或用途
- max_length=50,
- null=False,
- )
- key = models.CharField(
- max_length=50,
- null=False,
- )
- value = JSONField(
- # 内容格式只要符合 JSON 规范即可
- null=True,
- )
- objects = GeneralObjectManager()
- class Meta(object):
- abstract = True
- class GeneralObject(AbstractGeneralObject):
- """GeneralOption"""
- class Meta(object):
- db_table = 'django_vises_general_object'
Add Comment
Please, Sign In to add comment