사용자 지정 프로필 및 태그 만들기 | Django CMS 빌딩 By shriekdj
18757 단어 djangoshriekdjprogrammingpython
Django 프로젝트의 이름을
dj_admin
에서 config
로 변경했습니다. 프로젝트를 이해하고 실행하는 데 정확해야 하기 때문입니다. save()
기능은 프로젝트를 마이그레이션하는 동안 일부 오류를 생성했기 때문입니다.이제 Django의
Post Model
가 이렇게 생겼습니다.# Create your models here.
class Post(models.Model):
id = models.BigAutoField(primary_key=True)
title = models.CharField(verbose_name='title', max_length=255, null=False)
content = models.TextField(verbose_name='content', null=False, blank=True)
created_at = models.DateTimeField(verbose_name='created_at',auto_now=True, auto_created=True, null=False, blank=False)
published_at = models.DateTimeField(verbose_name='published_at',null=True)
updated_at = models.DateTimeField(verbose_name='updated_at',null=True)
slug = models.SlugField(verbose_name='slug', max_length=50, unique=True)
블로그 게시물 모델을 생성한 후에는 작성자/사용자 프로필 모델이 필요하며 이 모델이 게시물 모델보다 우수해야 함을 알아야 합니다.
사용자 프로필 생성을 위해 Django With
slug
필드의 Auth User Model을 가져와 블로그에서 사용하기 위해 Post Model
의 Upside 코드를 작성합니다.from django.conf import settings
class Profile(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete=models.PROTECT,
)
website = models.URLField(blank=True)
bio = models.CharField(max_length=240, blank=True)
def __str__(self):
return self.user.get_username()
여기에 프로필 삭제를 방지하기 위해
random_words()
를 추가했습니다.또한
Post Model
와 one-to-one
사이의 Post Model
앱에 on_delete=models.PROTECT
가 추가되었습니다.class Tag(models.Model):
name = models.CharField(max_length=50, unique=True, null=False)
slug = models.SlugField(verbose_name='slug', max_length=50, unique=True)
def __str__(self) -> str:
return self.name
또한
Tag Model
, blog
, Profile Model
로 명명된 Post Model
에 몇 가지 새 필드를 추가했으며 Post Model
를 subtitle
( 게시물에 대해 한 명의 저자만 고려함 ) 및 meta_description
를 다음과 같이 추가했습니다. is_published
많은 게시물이 태그를 가질 수 있고 그 반대도 가능하기 때문입니다.포스트 모델을 업데이트한 후 아래와 같이 표시됩니다.
# Create your models here.
class Post(models.Model):
id = models.BigAutoField(primary_key=True)
title = models.CharField(verbose_name='title', max_length=255, null=False)
subtitle = models.CharField(max_length=255, blank=True)
content = models.TextField(verbose_name='content', null=False, blank=True)
meta_description = models.CharField(max_length=150, blank=True)
created_at = models.DateTimeField(verbose_name='created_at',auto_now=True, auto_created=True, null=False, blank=False)
updated_at = models.DateTimeField(verbose_name='updated_at',null=True)
published_at = models.DateTimeField(verbose_name='published_at',null=True, blank=True)
is_published = models.BooleanField(verbose_name='is_published', default=False)
slug = models.SlugField(verbose_name='slug', max_length=50, unique=True)
author = models.ForeignKey(Profile, on_delete=models.PROTECT, default=None)
tags = models.ManyToManyField(Tag, blank=True)
또한 아래와 같이 블로그에 업데이트
author
가 필요합니다.from django.contrib import admin
# Register your models here.
from blog.models import Profile, Post, Tag
@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
model = Profile
@admin.register(Tag)
class TagAdmin(admin.ModelAdmin):
model = Tag
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
model = Post
list_display = (
"id",
"title",
"subtitle",
"slug",
"published_at",
"is_published",
)
list_filter = (
"is_published",
"published_at",
)
list_editable = (
"title",
"subtitle",
"slug",
"published_at",
"is_published",
)
search_fields = (
"title",
"subtitle",
"slug",
"body",
)
prepopulated_fields = {
"slug": (
"title",
"subtitle",
)
}
date_hierarchy = "published_at"
save_on_top = True
또한 관리자 패널의 추가 게시물 아래 스크린샷
다음은 내 GitHub Repo에 대한 링크입니다.
shriekdj / shriekdj_cms
django에서 shriekdj_cms 빌드
View on GitHub
Reference
이 문제에 관하여(사용자 지정 프로필 및 태그 만들기 | Django CMS 빌딩 By shriekdj), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/shriekdj/creating-custom-profile-and-tag-django-cms-building-by-shriekdj-5cid
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(사용자 지정 프로필 및 태그 만들기 | Django CMS 빌딩 By shriekdj), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shriekdj/creating-custom-profile-and-tag-django-cms-building-by-shriekdj-5cid텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)