Как исправить кнопку «добавить» администратора django - PullRequest
0 голосов
/ 11 мая 2019

Я новичок в веб-разработке, и я создаю веб-приложение для блога в Django.У меня проблемы с добавлением новых сообщений через django-admin.Нажатие на кнопку «Добавить» дает мне сообщение об ошибке "Error during template rendering - 'str' object has no attribute 'utcoffset'".

models.py


from django.db import models
from django.utils import timezone
import datetime

# Create your models here.


class Post(models.Model):
    title = models.CharField(max_length=50)
    content = models.TextField(blank=True, null=True)
    post_date = models.DateTimeField(default='date posted')

    def published_recently(self):
        now = timezone.now()
        return now - datetime.timedelta(days=1) <= self.post_date <= now
    published_recently.admin_order_field = 'post_date'
    published_recently.boolean = True
    published_recently.short_description = 'Recent post?'

    def __str__(self):
        return self.title


class Customer(models.Model):
    username = models.CharField(max_length=50)
    firstname = models.CharField(max_length=50)
    lastname = models.CharField(max_length=50)
    email = models.CharField(max_length=50)
    country = models.CharField(max_length=50)
    reg_date = models.DateTimeField(default='date reg')

    def __str__(self):
        return self.username


class Comment(models.Model):
    comment_cont = models.TextField(max_length=200)
    user_name = models.ForeignKey(Customer, default=0, on_delete=models.CASCADE)
    comment_post = models.ForeignKey(Post, on_delete=models.CASCADE)
    votes = models.BigIntegerField(default=0)
    comment_date = models.DateTimeField(default='date commented')

    def __str__(self):
        return self.comment_cont


class Feedback(models.Model):
    feedback_title = models.CharField(max_length=50)
    feedback_detail = models.CharField(max_length=200)
    user_name = models.ForeignKey(Customer, default=1, verbose_name='user_name', on_delete=models.SET_DEFAULT)

admin.py


from django.contrib import admin
from .models import Post, Customer, Feedback, Comment


# Register your models here.
class CommentInLine(admin.TabularInline):
    model = Comment
    extra = 1
    fields = ['comment_cont', 'votes', 'comment_date']


class CustomerAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': ['firstname', 'lastname', 'username', 'email', 'country', 'reg_date']})
    ]


class PostAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Post', {'fields': ['title', 'content']}),
        ('Date information', {'fields': ['post_date'], 'classes':['collapse']}),
    ]
    inlines = [CommentInLine]
    list_display = ('title', 'content', 'post_date', 'published_recently')
    list_filter = ['post_date']
    search_fields = ['title']


class FeedbackAdmin(admin.ModelAdmin):
    fieldsets = [
        ('Feedback', {'fields': ['feedback_title', 'feedback_detail', 'user_name']}),
    ]
    list_display = ('user_name', 'feedback_title', 'feedback_detail')
#     inlines = [CustomerInLine]
#     list_display = ('user_name', 'feedback_title', 'feedback_detail')


class CommentAdmin(admin.ModelAdmin):
    fields = ['user_name', 'comment_post', 'comment_cont', 'votes', 'comment_date']


admin.site.register(Post, PostAdmin)
admin.site.register(Feedback, FeedbackAdmin)
admin.site.register(Customer, CustomerAdmin)
admin.site.register(Comment, CommentAdmin)

Я хочу иметь возможностьдобавлять посты через админку Django.Любые другие исправления в коде очень приветствуются.Я ценю помощь.Благодаря.

1 Ответ

0 голосов
/ 11 мая 2019
post_date = models.DateTimeField(default='date posted')

post_date равно DateTimeField, и вы указали строку по умолчанию.Это должен быть экземпляр datetime.datetime.

post_date = models.DateTimeField(default=timezone.now)
# or
post_date = models.DateTimeField(auto_now_add=True, verbose_name='Publish Time')

должен решить проблему

...