Как исправить кнопку «добавить» администратора django

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

модели.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. Любые другие исправления в коде приветствуются. Я ценю помощь. Спасибо.

См. этот вопрос: stackoverflow.com/questions/51870088/…. Возможно, один из ваших столбцов БД - это дата типа. Попробуйте запустить миграцию еще раз. Попробуйте удалить поля одно за другим из набора полей PostAdmin, чтобы помочь отладить, какое поле вызывает у вас проблемы.

user9727749 11.05.2019 03:08

Спасибо. Я попробовал то, что вы предложили, и обнаружил проблему в классе CommentInLine. Большое спасибо.

MrUzo 13.05.2019 14:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
283
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
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')

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

@MrUzo ответ сработал? Если да, примите ответ, чтобы он помог другим

Joel Deleep 13.05.2019 11:09

Спасибо. Я пробовал оба, все равно выдает одно и то же сообщение об ошибке.

MrUzo 13.05.2019 14:10

запустите миграцию, а затем выполните миграцию

Joel Deleep 13.05.2019 14:12

Я считаю, что это было частью решения, но основная проблема заключалась в «comment_date» в классе CommenIntLine. Я снял его, и он решил проблему. Большое спасибо.

MrUzo 13.05.2019 14:24
comment_date = models.DateTimeField(default='date commented') это было из-за этого, как я упоминал в ответе, вы указали строку по умолчанию для поля даты и времени,
Joel Deleep 13.05.2019 14:28

Другие вопросы по теме