Пример #1
0
class Post(models.Model):
    author = models.ForeignKey(InstaUser,
                               on_delete=models.CASCADE,
                               related_name='my_posts')
    title = models.TextField(blank=True, null=True)
    image = ProcessedImageField(upload_to='static/images/posts',
                                format='JPEG',
                                options={'quality': 100},
                                blank=True,
                                null=True)

    # every time new post have been made
    def get_absolute_url(self):
        return reverse("user_detail", args=[str(self.author.id)])

    def __str__(self):
        return self.title

    def get_like_count(self):
        return self.likes.count()

    def get_comment_count(self):
        return self.comments.count()
Пример #2
0
class User(AbstractUser):
    last_name = models.CharField(_('Nom'), blank=True, max_length=255)
    first_name = models.CharField(_('Prénom'), blank=True, max_length=255)

    phone_regex = RegexValidator(regex=r'^\+?1?\d{10,13}$',
                                 message="Le numéro de téléphone doit être sous la forme '9999999999' ou '0041999999999'")
    phone_number = models.CharField(_('Téléphone'), validators=[phone_regex], blank=True, max_length=13, null=True)

    avatar = ProcessedImageField(verbose_name='Avatar',
                                 upload_to='avatars',
                                 processors=[ResizeToFill(256, 256)],
                                 format='JPEG',
                                 options={'quality': 60},
                                 default='default.jpg')
    # TODO: change this to a group ?
    is_teacher = models.BooleanField(default=False)
    subscribed_lessons = models.ManyToManyField(Lesson, related_name="subscribed_lessons")

    def __str__(self):
        return self.username

    def get_absolute_url(self):
        return reverse('users:detail', kwargs={'username': self.username})
Пример #3
0
class Post(models.Model):
    title = models.CharField(max_length=50)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    likes = models.ManyToManyField(User, related_name='likes')

    photo = ProcessedImageField(upload_to='photo',
                                processors=[ResizeToFit(1000, 800)],
                                format='JPEG',
                                options={'quality': 100},
                                blank=False)
    
    blog_photo = ImageSpecField(source='photo',
                                processors=[ResizeToFit(600, 700)],
                                format='JPEG',
                                options={'quality': 100})

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk': self.pk})

    def __str__(self):
        return self.title
Пример #4
0
class News(models.Model):
    def get_poster_path(self, filename):
        ext = filename.split('.')[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        return 'static/uploads/news/cover/' + filename

    title = models.CharField(max_length=150)
    slug = models.SlugField()
    author = models.ForeignKey(User, on_delete=models.PROTECT, related_name='news_author', blank=True, null=True)
    pinned = models.BooleanField(default=False)
    cover = ProcessedImageField(default='', verbose_name='News Poster', upload_to=get_poster_path, validators=[validate_file_size], **processed_image_field_specs)
    date = models.DateField(default=date.today)
    category = models.ForeignKey(Category, on_delete=models.PROTECT, related_name='category_author', blank=True, null=True)
    tags = models.ManyToManyField(Tag, related_name='news_tags')
    description = RichTextField(null=True, blank=True)
    featured = models.BooleanField(default=True, null=True)

    class Meta:
        verbose_name = "News"
        verbose_name_plural = "News"

    def __str__(self):
        return self.title
Пример #5
0
class Post(models.Model):
    author = models.ForeignKey(InstaUser,
                               on_delete=models.CASCADE,
                               related_name='my_posts')
    title = models.TextField(blank=True, null=True)
    image = ProcessedImageField(upload_to='static/images/posts',
                                format='JPEG',
                                options={'quality': 100},
                                blank=True,
                                null=True)
    posted_on = models.DateTimeField(auto_now_add=True, editable=False)

    def get_like_count(self):
        return self.likes.count()

    def get_comment_count(self):
        return self.comments.count()

    def get_absolute_url(self):
        return reverse("post_detail", args=[str(self.pk)])

    def __str__(self):
        return self.title
Пример #6
0
class Center(models.Model):
    name = models.CharField(max_length=128, null=False, blank=False)
    category = models.ForeignKey(CenterCategory,
                                 on_delete=models.PROTECT)
    main_image = ProcessedImageField(
        blank=True,
        null=True,
        upload_to='center/center/%Y/%M/%D',
        processors=[Thumbnail(1000, 1000)],
        format='JPEG',
        options={'quality': 60}
    )
    phone = models.CharField(max_length=128, null=False, blank=False)
    address = models.CharField(max_length=128, null=False, blank=False)
    longitude = models.FloatField(null=True, blank=True)
    latitude = models.FloatField(null=True, blank=True)
    is_active = models.BooleanField(null=False, blank=True, default=True)
    description = models.TextField(null=True, blank=True)
    created_datetime = models.DateTimeField(auto_now_add=True)
    updated_datetime = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name
Пример #7
0
class OptionalImageRenting(models.Model):

    alt = models.CharField(max_length=255, default='')

    slug = AutoSlugField(populate_from='alt',
                         unique_with=['alt'],
                         always_update=True)

    optional_renting = models.ForeignKey(OptionalRenting,
                                         related_name='images',
                                         default=None,
                                         on_delete=models.CASCADE)

    image = ProcessedImageField(upload_to=path_and_rename,
                                processors=[ResizeToFill(1000, 700)],
                                format='JPEG',
                                options={'quality': 100})

    class Meta:
        db_table = 'optionalRenting_Image'

    def __str__(self):
        return self.optional_renting.title
Пример #8
0
class Job(models.Model):
    title = models.CharField(max_length=100)
    deadline = models.DateTimeField()
    description = models.TextField()
    company = models.ForeignKey(Company, on_delete=models.CASCADE, null=True)
    filters = models.ManyToManyField(JobFilter)
    hyperlink = models.CharField(max_length=150, null=True, blank=True)
    hyperlinkText = models.CharField(max_length=150, null=True, blank=True)
    slug = models.SlugField(blank=True, null=True)
    image = ProcessedImageField(upload_to='job/', processors=[ResizeToFit(1000, 1000, False)], format='JPEG',
                                options={'quality': 85}, null=True, blank=True)

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        # Or whatever you want the slug to use
        self.slug = slugify(self.title + '-' + str(self.pk))
        super(Job, self).save(*args, **kwargs)

    class Meta:
        verbose_name = 'Stillingsannonse'
        verbose_name_plural = 'Stillingsannonser'
Пример #9
0
class Invite(BaseModel, TimestampMixin):
    token = models.CharField(max_length=100, unique=True)
    first_name = models.CharField(blank=False, max_length=100)
    last_name = models.CharField(blank=False, max_length=100)
    email = models.EmailField(blank=True, unique=True)
    phone_number = PhoneNumberField(null=True, blank=True, unique=True)
    avatar = ProcessedImageField(
        upload_to="user_photos",
        format="JPEG",
        options={"quality": 90},
        processors=[ResizeToFit(width=1200, height=1200)],
        blank=True,
        null=True)
    note = models.TextField(max_length=250, blank=True)
    sponsor = models.UUIDField(blank=False)
    expiration = models.DateTimeField(default=invitation_expiration)

    def __str__(self):
        return f"{self.first_name}"

    @property
    def is_expired(self):
        invite_exp = self.expiration > timezone.now()
Пример #10
0
class Post(TimeStamp):
    author = models.CharField(max_length=40)
    title = models.CharField(max_length=100, verbose_name='제목')
    photo_thumbnail = ProcessedImageField(verbose_name='photo',
        upload_to='blog/post/%Y/%m/%d', processors=[Thumbnail(500,500 )],  # 처리할 작업목록
        format='JPEG',
        options={'quality': 60},
        blank=True)
    content = models.TextField(help_text='Markdown 문법을 적용해 주세요')
    tags = models.CharField(max_length=50,choices=(
        ('travel','travel'),
        ('sports','sports'),
        ('tech','tech'),
        ('coding','coding'),
    ),blank=True)
    lnglat = models.CharField(max_length=100,validators=[lnglat_validator],
                              help_text='경도,위도 포맷으로 입력해주세요.')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:post_detail',args=[self.id])
Пример #11
0
class City(models.Model):

    name = models.CharField(null=True, blank=True, verbose_name=_('Nombre'), max_length=250)
    description = models.TextField(null=True, blank=True, verbose_name=_('Descripción'))
    latitude = models.FloatField(null=False, verbose_name=_('Latitud'), default=0)
    longitude = models.FloatField(null=False, verbose_name=_('Longitud'), default=0)
    photo = ProcessedImageField(null=True, blank=True, upload_to=RandomFileName('cities/'),
                                verbose_name=_('Imagen principal'),
                                processors=[ResizeToFit(1024, 1024, upscale=False)], format='JPEG')
    photo_thumbnail = ImageSpecField(source='photo',
                                       processors=[ResizeToFill(150, 150, upscale=False)],
                                       format='JPEG',
                                       options={'quality': 70})

    gallery = models.OneToOneField(Gallery, blank=True, null=True, on_delete=models.SET_NULL)

    class Meta:
        verbose_name = _('Ciudad')
        verbose_name_plural = _('Ciudades')
        ordering = ['name']

    def __unicode__(self):
        return self.name
Пример #12
0
class Photo(models.Model):
    album = models.ForeignKey(Album, on_delete=models.CASCADE)
    date_added = models.DateField(auto_now=True)
    file = models.ImageField(upload_to='original_photos',
                             validators=[FileExtensionValidator(allowed_extensions=[
                                                                'jpg',
                                                                'jpeg',
                                                                'png']),
                                         file_size_validator])
    thumbnail = ProcessedImageField(upload_to='thumbnails',
                                    processors=[ResizeToFit(150, 150)],
                                    format='JPEG')
    photo_name = models.CharField(max_length=200)
    tags = TaggableManager(blank=True)

    def get_tags(self):
        return self.tags.names()

    def get_album_name(self):
        return self.album.album_name

    def __str__(self):
        return self.photo_name
Пример #13
0
class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) # 장고의 기본 모델인 User를 일대일의 관계로 연결하고 둘중에 하나가 삭제되면 둘다 삭제되게 한다
    nickname = models.CharField('별명', max_length=30, unique=True) # admin 페이지에서 보여질 이름을 '별명'으로 하고 최대 30글자로 제한을 두고 해당 필드가 테이블에서 unique함을 나타낸다 
    picture = ProcessedImageField(upload_to=user_path, # 사진이 저장될 위치를 정함
                                 processors=[ResizeToFill(150,150)], # 사이즈를 150x150으로 정함
                                 format='JPEG', # 사진 포맷을 JPEG
                                 options={'quality': 90}, # 사진 퀄리티를 90
                                 blank=True, # Optional 필드로 지정
                                 )
    about = models.CharField(max_length=300, blank=True) # 자기소개필드 최대 300글자
    GENDER_C = ( # 성별 선택
        ('선택안함', '선택안함'),
        ('여성', '여성'),
        ('남성', '남성'),
    )
    
    gender = models.CharField('성별(선택사항)',
                             max_length=10,
                             choices=GENDER_C, # GENDER_C를 불러와서 선택창으로
                             default='N') # 기본값을 N으로
    
    def __str__(self):
        return self.nickname # __str__ 을 이용해서 nickname을 문자열로 표현해준다
Пример #14
0
class InstaUser(AbstractUser):
    profile_pic = ProcessedImageField(
        upload_to='static/images/profiles',
        format='JPEG',
        options={'quality': 100},
        null=True,
        blank=True,
    )

    def get_connections(self):
        connections = UserConnection.objects.filter(creator=self)
        return connections

    def get_followers(self):
        followers = UserConnection.objects.filter(following=self)
        return followers

    def is_followed_by(self, user):
        followers = UserConnection.objects.filter(following=self)
        return followers.filter(creator=user).exists()

    def get_sorted_posts(self):
        return self.my_posts.order_by('-date_created')
Пример #15
0
class Post(models.Model):
    title = models.CharField(max_length=20)
    content = models.TextField()
    # image = models.ImageField(blank=True) # 해당 필드에 null값이 들어가도 된다
    image = ProcessedImageField(
        upload_to='pages/images',  # 저장위치 (media 이후의 경로)
        processors=[Thumbnail(200, 300)],
        format='JPEG',
        options={'quality': 90},
        # 여기 안에 설정은 바로 적용되니 수정후 따로 makemigrations 할 필요 없다
        blank=True,
    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    # django의 user 모델을 참조한다
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE)
    like_users = models.ManyToManyField(settings.AUTH_USER_MODEL,
                                        related_name='liked_posts',
                                        blank=True)

    def __str__(self):
        return f'{self.id}. {self.title}'
Пример #16
0
class Project(models.Model):
    def get_poster_path(self, filename):
        ext = filename.split('.')[-1]
        filename = "%s.%s" % (uuid.uuid4(), ext)
        return 'static/uploads/images/projects/' + filename

    name = models.CharField(max_length=200)
    slug = models.SlugField(unique=True)
    featured = models.BooleanField(default=False)
    tagline = models.CharField(max_length=100)
    members = models.ManyToManyField(User, related_name='Project')
    published = models.DateField(default=date.today)
    cover = ProcessedImageField(default='', verbose_name='Project Poster', upload_to=get_poster_path, validators=[validate_file_size], **processed_image_field_specs)
    topics = models.ManyToManyField(Skill, related_name='ProjectTopics', blank=True)
    detail = RichTextField(verbose_name='Details', null=True)
    links = models.ManyToManyField(Portal, related_name='ProjectLinks', through='SocialProject')

    class Meta:
        verbose_name_plural = "Projects"
        verbose_name = "Project"

    def __str__(self):
        return self.name
Пример #17
0
class Carousel(models.Model):
    title = models.CharField('图片标题',
                             max_length=50,
                             blank=True,
                             null=True,
                             default='LightBlog niubility')
    image = ProcessedImageField(upload_to='Carousel',
                                processors=[ResizeToFill(937, 405)],
                                format='JPEG',
                                options={'quality': 98},
                                verbose_name='展示图片')

    image_130x56 = ImageSpecField(
        source="image",
        processors=[ResizeToFill(130, 56)],  # 处理后的图像大小
        format='JPEG',  # 处理后的图片格式
        options={'quality': 90}  # 处理后的图片质量
    )

    class Meta:
        # 如果只设置verbose_name,在Admin中会显示“产品信息 s”
        verbose_name = ' 轮播图 '
        verbose_name_plural = ' 轮播图 '
Пример #18
0
class Book(models.Model):
    def get_image_path(instance, filename):
        return os.path.join(str(instance.title), filename)

    def get_thumb_path(instance):
        return os.path.join(str(instance.title), 'thumb')

    title = models.CharField(max_length=150)
    description = models.TextField(blank=True, null=True)
    year = models.IntegerField()
    price = models.DecimalField(decimal_places=2, max_digits=10)
    image = models.ImageField(upload_to=get_image_path,
                              default='/None/none.jpg')
    thumbnail = ProcessedImageField(upload_to=get_thumb_path,
                                    default='/None/none.jpg')
    authors = models.ManyToManyField('Author')
    category = models.ForeignKey('Category')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return "/books/%i/" % self.pk
Пример #19
0
class Profile(models.Model):
    #사용자 정보는 같은 사람이 여러개일수 없으니까 한쪽이 지워지게 되면 양쪽이 지워질 수 있도록, 하나의 유저정보만 가질 수 있도록(on delete 부분)
    user = models.OneToOneField(settings.AUTH_USER_MODEL,
                                on_delete=models.CASCADE)
    nickname = models.CharField('별명', max_length=20, unique=True)
    picture = ProcessedImageField(upload_to=user_path,
                                  processors=[ResizeToFill(150, 150)],
                                  format='JPEG',
                                  options={'quality': 90},
                                  blank=True)
    about = models.CharField(max_length=300, blank=True)
    GENDER_C = (
        ('선택안함', '선택안함'),
        ('여성', '여성'),
        ('남성', '남성'),
    )
    gender = models.CharField('성별(선택사항)',
                              max_length=10,
                              choices=GENDER_C,
                              default='N')

    def __str__(self):
        return self.nickname
Пример #20
0
class Article(models.Model):
    article = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    like_users = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='like_articles', blank=True)
    hashtags = models.ManyToManyField(Hashtag, related_name='hashtag_articles', blank=True)
    month = models.IntegerField(blank=True, null=True)
    last_popular_post = models.IntegerField(default=0)
    popular_post = models.IntegerField(default=0)
    image = ProcessedImageField(
        processors=[ResizeToFit(300, 300)],
        format='JPEG',
        options={'quality': 90},
        upload_to='articles/images',
        blank=False,
    )

    class Meta:
        ordering = ('-pk',)
    
    def __str__(self):
        return self.article
Пример #21
0
class Danger(models.Model):
    objects = models.Manager()
    danger_pk = models.AutoField(primary_key=True)
    danger_type = models.CharField(max_length=30)
    # han : 기존 코드
    #danger_img = models.ImageField(null=True, blank=True, upload_to="danger_img/%Y/%m/%d/")
    # han
    danger_img = ProcessedImageField(
                upload_to =post_image_path,
                processors=[ResizeToFill(300,300)],
                format='JPEG',
                options={'quality':90},
    )
    # han : 저장경로 예) MEDIA_ROOT/danger_img/2020/10/09/xxx.jpg 경로에 저장
    # han : DB필드 예) MEDIA_URL/dnager?img/2020/10/09/xxx.jpg' 문자열 저장
    
    danger_loc = models.TextField()  # This field type is a guess. 
    create_at = models.DateTimeField(auto_now_add=True)
    auth_user_id_fk = models.ForeignKey('AuthUser', models.DO_NOTHING, db_column='auth_user_id_fk', blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'danger'
Пример #22
0
class Image(models.Model):
    user_profile = models.ForeignKey(Profile, null=True, blank=True)
    image_name = models.CharField(max_length=100)
    image = ProcessedImageField(upload_to='images',
                                format='JPEG',
                                options={'quality': 100})
    image_caption = models.CharField(max_length=254)
    posted_on = models.DateTimeField(default=datetime.now)

    def get_number_of_likes(self):
        return self.like_set.count()

    def get_number_of_comments(self):
        return self.comment_set.count()

    def __str__(self):
        return self.image_name

    def save_image(self):
        self.save()

    def delete_image(self):
        self.delete()
Пример #23
0
class Article(models.Model):
    title = models.CharField(max_length=40)
    content = models.TextField()
    # 원래대로라면 새로운 필드를 추가하고 나면 makemigrations 할때,어떤 값을 넣을 것인지 Django가 물어본다.
    # 기본적으로  blank=False이기 때문이다.
    # blank=True -> '빈 문자열'이 들어가도 된다.

    image = ProcessedImageField(
        processors=[Thumbnail(200, 300)],  # 처리할 작업
        format='JPEG',  # 이미지 포맷
        options={  # 각종 추가 옵션
            'quality': 90
        },
        upload_to='articles/image'  # 저장 위치
        # 실제 경로 : MEDIA_ROOT/articles/image
    )

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    # 객체 표시 형식 수정
    def __str__(self):
        return f'[{self.pk}번글]: {self.title}|{self.content}'
Пример #24
0
class WikiCategory(models.Model):
    name = models.CharField('Тип материала',
                            max_length=300,
                            null=True,
                            blank=True)
    icon = ProcessedImageField(verbose_name='Иконка материала',
                               upload_to='media/',
                               format='JPEG',
                               options={'quality': 90},
                               null=True,
                               blank=True)
    thumb = ImageSpecField(source='icon',
                           processors=[ResizeToFill(50, 50)],
                           format='JPEG',
                           options={'quality': 90})

    class Meta:
        db_table = 'wiki_category'
        verbose_name = ('Тип материала для справочника')
        verbose_name_plural = ('Тип материала для справочника')

    def __str__(self):
        return '%s' % self.name
Пример #25
0
class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,
                                on_delete=models.CASCADE)
    nickname = models.CharField(max_length=10, blank=True)
    introduction = models.TextField(blank=True)
    image = ProcessedImageField(
        blank=True,
        upload_to=profile_image_path,
        processors=[ResizeToFill(300, 300)],
        format='JPEG',
        options={'quality': 90},
    )


# class UserManager(DefaultUserManager):
#     # 페이스북으로 가입하면 user_type을 K(Kakao)으로 지정한다.
#     def get_or_create_facebook_user(self, user_pk, extra_data):
#         user = User.objects.get(pk=user_pk)
#         user.user_type = "K"
# 		user.nickname = extra_data['nickname']
#         user.save()

#         return user
Пример #26
0
class Project(models.Model):
    """A model to represent project entries in a portfolio."""

    title = models.CharField(max_length=205)
    text = models.TextField()

    image = ProcessedImageField(
        upload_to="static/portfolio/images",
        processors=[ResizeToFill(200, 200)],
        blank=True,
    )

    github_url = models.URLField(blank=True, )

    demo_url = models.URLField(blank=True, )

    def get_absolute_url(self):
        return reverse("portfolio:project_detail", kwargs={"pk": self.pk})

    def __str__(self):
        """How a project should be represented as a string."""

        return self.title
Пример #27
0
class User(AbstractUser):
    is_validated = models.BooleanField(default=False)
    email = models.EmailField('email address', blank=False, unique=True)
    about_text = models.TextField(max_length=1000,
                                  null=True,
                                  blank=True,
                                  validators=(MaxLengthValidator(1000), ))
    github_name = models.CharField(max_length=100,
                                   null=True,
                                   blank=True,
                                   validators=(MaxLengthValidator(100), ))
    avatar = ProcessedImageField(upload_to='users/avatars',
                                 processors=[
                                     ResizeToFill(width=400,
                                                  height=400,
                                                  anchor=Anchor.CENTER),
                                 ],
                                 default='users/avatars/default/default.jpg',
                                 format='JPEG',
                                 options={'quality': 90})

    def __str__(self):
        return self.username
Пример #28
0
class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    nickname = models.CharField('별명', max_length=30, unique=True)
    follow_set = models.ManyToManyField('self', blank=True, through='Follow', symmetrical=False)
    picture = ProcessedImageField(upload_to=user_path, processors=[ResizeToFill(150, 150)], format='JPEG', options={'quality': 90}, blank=True)
    about = models.CharField(max_length=300, blank=True)
    GENDER_C = (
        ('선택안함', '선택안함'),
        ('여성', '여성'),
        ('남성', '남성'),
    )
    gender = models.CharField('성별(선택사항)', max_length=10, choices=GENDER_C, default='N')

    def __str__(self):
        return self.nickname

    @property
    def get_follower(self):
        return [i.from_user for i in self.follower_user.all()]

    @property
    def get_following(self):
        return [i.to_user for i in self.follow_user.all()]

    @property
    def follower_count(self):
        return len(self.get_follower)

    @property
    def following_count(self):
        return len(self.get_following)

    def is_follower(self, user):
        return user in self.get_follower

    def is_following(self, user):
        return user in self.get_following
Пример #29
0
class Profile(models.Model):
    GENDER = (('M', 'Male'), ('F', 'Female'), ('O', 'Other'))

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    first_name = models.CharField(verbose_name="First Name", max_length=50)
    last_name = models.CharField(verbose_name="Last name", max_length=50)
    profile_image = ProcessedImageField(upload_to='profile_pics',
                                        processors=[ResizeToFill(300, 300)],
                                        format='JPEG',
                                        options={'quality': 60},
                                        blank=True)
    gender = models.CharField(max_length=1, choices=GENDER)
    alt_email = models.EmailField(verbose_name="Alternate Email",
                                  max_length=255,
                                  blank=True)
    contact_no = models.CharField(verbose_name="Contact Number", max_length=13)
    street_address1 = models.CharField(verbose_name="Address Line 1",
                                       max_length=255)
    street_address2 = models.CharField(verbose_name="Address Line 2",
                                       max_length=255,
                                       blank=True)
    city = models.CharField(max_length=50)
    state = models.CharField(max_length=50)
    pincode = models.CharField(max_length=6)

    def __str__(self):
        return f'{self.get_full_name} - {self.user.email}'

    @property
    def get_full_name(self):
        return f'{self.first_name} {self.last_name}'

    @property
    def get_complete_address(self):
        if self.street_address2:
            return f'{self.street_address1}, {self.street_address2}, {self.city} - {self.pincode}, {self.state}'
        return f'{self.street_address1}, {self.city} - {self.pincode}, {self.state}'
Пример #30
0
class Post(models.Model):
    STATUS_CHOICES = (
        ('d', 'Draft'),
        ('p', 'Published'),
        ('w', 'Withdrawn'),
    )

    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE)
    title = models.CharField(max_length=100,
                             verbose_name='제목',
                             help_text='포스팅 제목을 입력해주세요. 최대 100자 내외')
    content = models.TextField(verbose_name='내용')  # 길이 제한이 없는 문자열
    photo = ProcessedImageField(max_length=300,
                                blank=True,
                                upload_to='blog/post/%Y/%m/%d',
                                processors=[Thumbnail(300, 300)],
                                format='JPEG',
                                options={'quality': 60})
    tags = models.CharField(max_length=100, blank=True)
    lnglat = models.CharField(max_length=500,
                              help_text='Ex: 127,35',
                              blank=True,
                              validators=[lnglat_validator])
    status = models.CharField(max_length=1, choices=STATUS_CHOICES)
    tag_set = models.ManyToManyField('Tag', blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ['-id']

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:post_detail', args=[self.id])