사용자 지정 프로필 및 태그 만들기 | 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.)