Я использую django 2.0.8 с Python 3.5 и django-threadadedcomments для комментирования функциональности.
Я пытаюсь создать блог (да, я знаю, что существуют приложения для блогов django!), Который поддерживает определенные «социальные» функции:
- Возможность ставить лайки в блоге (или любой другой модели)
- Возможность сообщать в блоге (или любой другой модели)
- Возможность комментировать пост
- Возможность большого пальца вверх / вниз и сообщать о комментариях
Как я упоминал ранее, я использую django-threadadedcomments для своей функции комментирования.
Вот некоторые из моих моделей:
Foo / models.py
from django.db import models
from django.contrib.contenttypes.fields import GenericRelation
from threadedcomments.models import ThreadedComment
from django.conf import settings
class AbuseReport(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, blank=False, null=False, default=1, on_delete = models.CASCADE)
class Reportable(models.Model):
abuses = GenericRelation(AbuseReport)
class Meta:
abstract = True
class Like(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, blank=False, null=False, default=1, on_delete = models.CASCADE)
class Likeable(models.Model):
likes = GenericRelation(Like)
class Meta:
abstract = True
class ThumbVote(models.Model):
VOTE_TYPES = (
('U', 'Upvote'),
('D', 'Downvote'),
)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, blank=False, null=False, default=1, on_delete = models.CASCADE)
vote = models.CharField(max_length=1, choices=VOTE_TYPES)
class Thumbvoteable(models.Model):
thumbvotes = GenericRelation(ThumbVote)
class Meta:
abstract = True
class ThumbvoteableReportableComment(Thumbvoteable, ThreadedComment):
pass
Foobar / models.py
from foo.models import ThumbvoteableReportableComment \
Likeable, Reportable
# Create your models here.
class Post(Likeable, Reportable):
pass
class PostComments(ThumbvoteableReportableComment):
post = models.ForeignKey(Post, related_name='comments', on_delete = models.CASCADE)
Foobar / admin.py
from django.contrib import admin
from .models import Post, PostComments
class PostCommentsInline(admin.TabularInline):
model = PostComments
readonly_fields = ('thumbvotes',)
fields = ('comment', 'abuse_report_count')
class PostAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}
list_display = ('title', 'pub_date')
inlines = [PostFileInline, PostPictureGalleryInline, PostCommentsInline]
def save_model(self, request, obj, form, change):
obj.author = request.user
obj.save()
# Register your models here.
admin.site.register(Post, PostAdmin)
Когда я захожу на страницу администратора django, возникают следующие проблемы:
- Объект Post не имеет поля
abuses
- Объект Post не имеет поля
likes
- Форма добавления PostComment не имеет поля
abuse_report_count
И не имеет поля thumbvote
(оба унаследованы от родительских классов)
Как изменить модели и т. Д., Чтобы поля отображались в администраторе администратора?