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'),)