Я разработал следующие модели для моего блогаDjango администратора InlineModels для manytomany полей
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField(default='')
created_at = models.DateTimeField('created date', auto_now_add=True, auto_now=False)
updated_at = models.DateTimeField('updated date', auto_now_add=False, auto_now=True)
author = models.ForeignKey('Author', default='admin')
def __str__(self):
return self.title
class Author(models.Model):
name = models.CharField(max_length=150)
email = models.EmailField(blank=True)
bio = models.TextField()
def __str__(self):
return self.name
class Category(models.Model):
cat_name = models.CharField(max_length=200)
post = models.ManyToManyField('Post')
def __str__(self):
return self.cat_name
class Tag(models.Model):
tag_name = models.CharField(max_length=200)
post = models.ManyToManyField('Post')
def __str__(self):
return self.tag_name
и я пытаюсь зарегистрировать эту модель под Джанго администратора таким образом, что. Я могу редактировать категории, теги и авторы со страницы. но я с трудом, чтобы выполнить этот разговор, я написал этот код в файле admin.py
from django.contrib import admin
from .models import Post, Author, Tag, Category
class AuthorInline(admin.TabularInline):
model= Author
class TagInline(admin.StackedInline):
model= Tag
class CategoryInline(admin.StackedInline):
model = Category
@admin.register(Post) #another method of registration admin.site.register(Post, PostAdmin)
class PostAdmin(admin.ModelAdmin):
#Show the following fields in this order
fields = ['body', 'title']
#show the following filelds for nice formattng
list_display = ['title', 'author', 'created_at']
#display based on the date hirerarchy
date_hierachy = 'created_at'
#embed the following child models in this parent models
inlines = [AuthorInline, TagInline, CategoryInline,]
#to exclude fields
exclude = ('author',)
Когда я запускаю мой сервер я получил ошибки как
ERRORS:
<class 'blogs.admin.AuthorInline'>: (admin.E202) 'blogs.Author' has no ForeignKey to 'blogs.Post'.
<class 'blogs.admin.CategoryInline'>: (admin.E202) 'blogs.Category' has no ForeignKey to 'blogs.Post'.
<class 'blogs.admin.TagInline'>: (admin.E202) 'blogs.Tag' has no ForeignKey to 'blogs.Post'.
при расследовании ошибки, мы не можем иметь класс StackedInline, если у моделей нет внешнего ключа, но как я могу поместить теги, категории и автора, созданные в виде формы на странице «Почта» в django admin,
Но первый логик изменит мой бизнес-логику , так как я хочу, чтобы у автора могло быть много сообщений, как он может, но два автора не могут соавторировать сообщение. Для другого встроенного я проверил doc – shining
. Затем вам нужно добавить в файл автора модель foreignkey feild и удалить поле автора в Post; или вы должны изменить автора feild как maytomany вместо foreignkey –