Index ソフト・ハード Djangoタスク sampleなど | modelサンプル |
project01 accounts thread project02 |
project01 accounts/models.py
from django.db import models
from django.contrib.auth.models import PermissionsMixin
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
from django.contrib.auth.validators import UnicodeUsernameValidator, ASCIIUsernameValidator
from django.core.mail import send_mail
from django.utils.translation import gettext_lazy as _
from django.utils import timezone
class UserManager(BaseUserManager):
use_in_migrations = True
def _create_user(self, username, email, password, **extra_fields):
if not username:
raise ValueError('The given username must be set')
if not email:
raise ValueError('The given email must be set')
email = self.normalize_email(email)
username = self.model.normalize_username(username)
user = self.model(username=username, email=email, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, username, email=None, password=None, **extra_fields):
extra_fields.setdefault('is_staff', False)
extra_fields.setdefault('is_superuser', False)
return self._create_user(username, email, password, **extra_fields)
def create_superuser(self, username, email, password, **extra_fields):
extra_fields.setdefault('is_staff', True)
extra_fields.setdefault('is_superuser', True)
if extra_fields.get('is_staff') is not True:
raise ValueError('Superuser must have is_staff=True.')
if extra_fields.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True.')
return self._create_user(username, email, password, **extra_fields)
class User(AbstractBaseUser, PermissionsMixin):
username_validator = UnicodeUsernameValidator()
# python3で半角英数のみ許容する場合はASCIIUsernameValidatorを用いる。
# username_validator = ASCIIUsernameValidator()
username = models.CharField(
_('username'),
max_length=50,
unique=True,
# help_text=_('Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.'),
help_text='この項目は必須です。全角文字、半角英数字、@/./+/-/_ で50文字以下にしてください。',
validators=[username_validator],
error_messages={
'unique': _("A user with that username already exists."),
},
)
# first_name = models.CharField(_('first name'), max_length=30, blank=True)
# last_name = models.CharField(_('last name'), max_length=150, blank=True)
email = models.EmailField(
_('email address'),
help_text='この項目は必須です。メールアドレスは公開されません。',
blank=False
)
is_staff = models.BooleanField(
_('staff status'),
default=False,
help_text=_('Designates whether the user can log into this admin site.'),
)
is_active = models.BooleanField(
_('active'),
default=True,
help_text=_(
'Designates whether this user should be treated as active. '
'Unselect this instead of deleting accounts.'
),
)
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
objects = UserManager()
EMAIL_FIELD = 'email'
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')
# abstract = True
abstract = False
def clean(self):
super().clean()
self.email = self.__class__.objects.normalize_email(self.email)
def email_user(self, subject, message, from_email=None, **kwargs):
send_mail(subject, message, from_email, [self.email], **kwargs)
thread/models.py
from django.db import models
class CategoryManager(models.Manager):
# Category操作に関する処理
pass
class TopicManager(models.Manager):
pass
class CommentManager(models.Manager):
pass
class VoteManager(models.Manager):
def create_vote(self, ip_address, comment_id):
vote = self.model(
ip_address=ip_address,
comment_id = comment_id
)
try:
vote.save()
except:
return False
return True
class Category(models.Model):
name = models.CharField(
'カテゴリー名',
max_length=50,
)
url_code = models.CharField(
'URLコード',
max_length=50,
null=True,
blank=False,
unique=True,
)
sort=models.IntegerField(
verbose_name='ソート',
default=0,
)
objects = CategoryManager
def __str__(self):
return self.name
class Topic(models.Model):
user_name = models.CharField(
'お名前',
max_length=30,
null=True,
blank=False,
)
title = models.CharField(
'タイトル',
max_length=255,
null = False,
blank = False,
)
message = models.TextField(
verbose_name='本文',
null=True,
blank=False,
)
category = models.ForeignKey(
Category,
verbose_name='カテゴリー',
on_delete=models.PROTECT,
null=True,
blank=False,
)
created = models.DateTimeField(
auto_now_add=True,
)
modified = models.DateTimeField(
auto_now=True,
)
objects = TopicManager()
def __str__(self):
return self.title
class Comment(models.Model):
id = models.BigAutoField(
primary_key=True,
)
no = models.IntegerField(
default=0,
)
user_name = models.CharField(
'お名前',
max_length=30,
null=True,
blank=False,
)
topic = models.ForeignKey(
Topic,
on_delete=models.PROTECT,
)
message = models.TextField(
verbose_name='投稿内容'
)
pub_flg = models.BooleanField(
default=True,
)
created = models.DateTimeField(
auto_now_add=True,
)
objects = CommentManager()
def __str__(self):
return '{}-{}'.format(self.topic.id, self.no)
class Vote(models.Model):
comment = models.ForeignKey(
Comment,
on_delete=models.CASCADE,
null=True,
)
ip_address = models.CharField(
'IPアドレス',
max_length=50,
)
objects = VoteManager()
def __str__(self):
return '{}-{}'.format(self.comment.topic.title, self.comment.no)
project02 ・('プロジェクト名'/models.py)
from django.db import models
class AuthGroup(models.Model):
name = models.CharField(unique=True, max_length=150)
class Meta:
managed = False
db_table = 'auth_group'
class AuthGroupPermissions(models.Model):
id = models.BigAutoField(primary_key=True)
group = models.ForeignKey(AuthGroup, models.DO_NOTHING)
permission = models.ForeignKey('AuthPermission', models.DO_NOTHING)
class Meta:
managed = False
db_table = 'auth_group_permissions'
unique_together = (('group', 'permission'),)
class AuthPermission(models.Model):
name = models.CharField(max_length=255)
content_type = models.ForeignKey('DjangoContentType', models.DO_NOTHING)
codename = models.CharField(max_length=100)
class Meta:
managed = False
db_table = 'auth_permission'
unique_together = (('content_type', 'codename'),)
class AuthUser(models.Model):
password = models.CharField(max_length=128)
last_login = models.DateTimeField(blank=True, null=True)
is_superuser = models.BooleanField()
username = models.CharField(unique=True, max_length=150)
first_name = models.CharField(max_length=150)
last_name = models.CharField(max_length=150)
email = models.CharField(max_length=254)
is_staff = models.BooleanField()
is_active = models.BooleanField()
date_joined = models.DateTimeField()
class Meta:
managed = False
db_table = 'auth_user'
class AuthUserGroups(models.Model):
id = models.BigAutoField(primary_key=True)
user = models.ForeignKey(AuthUser, models.DO_NOTHING)
group = models.ForeignKey(AuthGroup, models.DO_NOTHING)
class Meta:
managed = False
db_table = 'auth_user_groups'
unique_together = (('user', 'group'),)
class AuthUserUserPermissions(models.Model):
id = models.BigAutoField(primary_key=True)
user = models.ForeignKey(AuthUser, models.DO_NOTHING)
permission = models.ForeignKey(AuthPermission, models.DO_NOTHING)
class Meta:
managed = False
db_table = 'auth_user_user_permissions'
unique_together = (('user', 'permission'),)
class DjangoAdminLog(models.Model):
action_time = models.DateTimeField()
object_id = models.TextField(blank=True, null=True)
object_repr = models.CharField(max_length=200)
action_flag = models.SmallIntegerField()
change_message = models.TextField()
content_type = models.ForeignKey('DjangoContentType', models.DO_NOTHING, blank=True, null=True)
user = models.ForeignKey(AuthUser, models.DO_NOTHING)
class Meta:
managed = False
db_table = 'django_admin_log'
class DjangoContentType(models.Model):
app_label = models.CharField(max_length=100)
model = models.CharField(max_length=100)
class Meta:
managed = False
db_table = 'django_content_type'
unique_together = (('app_label', 'model'),)
class DjangoMigrations(models.Model):
id = models.BigAutoField(primary_key=True)
app = models.CharField(max_length=255)
name = models.CharField(max_length=255)
applied = models.DateTimeField()
class Meta:
managed = False
db_table = 'django_migrations'
class DjangoSession(models.Model):
session_key = models.CharField(primary_key=True, max_length=40)
session_data = models.TextField()
expire_date = models.DateTimeField()
class Meta:
managed = False
db_table = 'django_session'
class Tbl01(models.Model):
xxxxno = models.CharField(primary_key=True, max_length=12)
xxxxusername = models.CharField(max_length=-1)
xxxxcomment = models.CharField(max_length=-1, blank=True, null=True)
xxxxopen = models.CharField(max_length=-1, blank=True, null=True)
class Meta:
managed = False
db_table = 'tbl01'
unique_together = (('xxxxno', 'xxxxusername'),)
class Tbl02(models.Model):
xxxxno = models.CharField(primary_key=True, max_length=12)
xxxxshiro_id = models.CharField(max_length=-1, blank=True, null=True)
xxxxshiro_name = models.CharField(max_length=-1, blank=True, null=True)
xxxxkuro_id = models.CharField(max_length=-1, blank=True, null=True)
xxxxkuro_name = models.CharField(max_length=-1, blank=True, null=True)
xxxxkomi = models.CharField(max_length=-1, blank=True, null=True)
xxxxkekka = models.CharField(max_length=-1, blank=True, null=True)
class Meta:
managed = False
db_table = 'tbl02'
class Tbl03(models.Model):
xxxxno = models.IntegerField(primary_key=True)
xxxxusername = models.CharField(max_length=-1)
xxxxpassword = models.CharField(max_length=-1, blank=True, null=True)
xxxxname = models.CharField(max_length=-1, blank=True, null=True)
xxxxfurigana = models.CharField(max_length=-1, blank=True, null=True)
xxxxdepart = models.CharField(max_length=-1, blank=True, null=True)
xxxxadmin = models.IntegerField(blank=True, null=True)
xxxxenabled = models.IntegerField(blank=True, null=True)
xxxxaccountnonlocked = models.IntegerField(blank=True, null=True)
xxxxaccountnonexpired = models.IntegerField(blank=True, null=True)
xxxxcredentialsnonexpired = models.IntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'tbl03'
unique_together = (('xxxxno', 'xxxxusername'),)
|
All Rights Reserved. Copyright (C) ITCL |