削除中のDjango管理エラー

user6089877

不思議なエラーがあります:

TypeError at /admin/wall/articles/
__str__ returned non-string (type Articles)

モデル記事があります。Djangoの管理パネルからデータベースのいくつかの記事を削除しようとしています。一部のオブジェクトでのみ発生するため、不思議だと言いました。ほとんどの記事を削除できますが、何らかの理由で、削除するとデータベースの一部のエントリがエラーを返します。私の他のモデルでは起こりません。

これは、私のテーブル「Articles」のすべてのエントリを示すphpmyadminのスクリーンショットです。

ここに画像の説明を入力してください

たとえば、IDが70のエントリがあります。Django管理パネルで削除できません。エラーが発生します。テストのために、正確なエントリを再作成し(ID 75を参照)、このエントリをdjango管理パネルから削除できます。

一部のコンテンツを削除できますが、すべてを削除できないのはなぜですか?

これは私のmodels.pyです:

from django.db import models
from start.models import Games
from django.contrib.auth.models import User
from tinymce.models import HTMLField

# Create your models here.

def user_directory_path_articles(instance, filename):
    return 'media/user/user_{0}/articles/{1}/'.format(instance.user.id, filename)

def user_directory_path_comments(instance, filename):
    return 'media/user/user_{0}/comments/{1}/'.format(instance.user.id, filename)

def validate_file_extension(value):
    import os
    from django.core.exceptions import ValidationError
    ext = os.path.splitext(value.name)[1]  # [0] returns path+filename
    valid_extensions = ['.jpg', '.png']
    if not ext.lower() in valid_extensions:
        raise ValidationError(u'Merci d\'utiliser le format JPG ou PNG')

class Articles(models.Model):
    title = models.CharField(max_length=50, null=False, verbose_name="Titre")
    text = HTMLField()
    image = models.FileField(upload_to='media/articles/', validators=[validate_file_extension], blank=True, null=True, verbose_name="Image de présentation")
    games = models.ForeignKey(Games, verbose_name="Jeux", blank=True, null=True)
    author = models.ForeignKey(User, verbose_name="Auteur")
    is_statut = models.BooleanField(default=True, verbose_name="Statut")
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de création")
    update = models.DateTimeField(auto_now=True, verbose_name="Dernière modification")

    def __str__(self):
        return self.title

class Comments(models.Model):
    text = models.CharField(max_length=300, null=False)
    image = models.FileField(upload_to=user_directory_path_comments, validators=[validate_file_extension], blank=True, null=True)
    articles = models.ForeignKey(Articles, verbose_name="Article", null=False, related_name='comments')
    author = models.ForeignKey(User, verbose_name="Auteur")
    in_answer_to = models.ForeignKey('self', verbose_name="En réponse au commentaire", blank=True, null=True, on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de création")
    update = models.DateTimeField(auto_now=True, verbose_name="Dernière modification")

    def __str__(self):
        return self.text

class Like(models.Model):
    articles = models.ForeignKey(Articles, verbose_name="Article", null=True, blank=True)
    user = models.ForeignKey(User, verbose_name="Auteur", null=False)

    def __str__(self):
        return self.articles

class Up(models.Model):
    comments = models.ForeignKey(Comments, verbose_name="Commentaire", null=True, blank=True)
    user = models.ForeignKey(User, verbose_name="Auteur", null=False)

これは私のadmin.pyです:

from django.contrib import admin
from .models import Articles, Comments

# Register your models here.

class ArticlesAdmin(admin.ModelAdmin):
    list_display = ('date', 'title', 'author', 'games', 'is_statut', 'update')


    fieldsets = (
        ('Général', {
            'fields': ('title', 'author', 'is_statut')
            }),
        ('Choisir une image de présentation', {
            'fields': ('image',)}),     
        ('Contenu de l\'article', {
            'fields': ('text',)}),
        ('En rapport avec le jeu :', {
            'fields': ('games',)}),
    )
admin.site.register(Articles, ArticlesAdmin)

これは私のエラーページのトレースバックです、そしてあなたの助けに感謝します:

Environment:


Request Method: POST
Request URL: http://*******:8000/admin/wall/articles/

Django Version: 1.11.2
Python Version: 3.5.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'widget_tweaks',
 'tinymce',
 'start',
 'myaccount',
 'wall']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/options.py" in wrapper
  551.                 return self.admin_site.admin_view(view)(*args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/utils/decorators.py" in _wrapped_view
  149.                     response = view_func(request, *args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func
  57.         response = view_func(request, *args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/sites.py" in inner
  224.             return view(request, *args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/utils/decorators.py" in _wrapper
  67.             return bound_func(*args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/utils/decorators.py" in _wrapped_view
  149.                     response = view_func(request, *args, **kwargs)

File "/usr/local/lib/python3.5/dist-packages/django/utils/decorators.py" in bound_func
  63.                 return func.__get__(self, type(self))(*args2, **kwargs2)

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/options.py" in changelist_view
  1568.                 response = self.response_action(request, queryset=cl.get_queryset(request))

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/options.py" in response_action
  1286.             response = func(self, request, queryset)

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/actions.py" in delete_selected
  37.         queryset, opts, request.user, modeladmin.admin_site, using)

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/utils.py" in get_deleted_objects
  172.     to_delete = collector.nested(format_callback)

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/utils.py" in nested
  232.             roots.extend(self._nested(root, seen, format_callback))

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/utils.py" in _nested
  216.             children.extend(self._nested(child, seen, format_callback))

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/utils.py" in _nested
  218.             ret = [format_callback(obj)]

File "/usr/local/lib/python3.5/dist-packages/django/contrib/admin/utils.py" in format_callback
  145.                                    force_text(obj))

File "/usr/local/lib/python3.5/dist-packages/django/utils/encoding.py" in force_text
  76.                     s = six.text_type(s)

Exception Type: TypeError at /admin/wall/articles/
Exception Value: __str__ returned non-string (type Articles)
ダニエルローズマン

問題はあなたのLikeモデルにあります。エラーが示すように、__str__その記事メソッドは文字列ではなく、Articlesのインスタンスを返します。たとえば、実際に文字列を返すようにしてくださいself.articles.title

これが削除の問題である理由は、記事を削除すると、その記事を指すすべてのオブジェクトも削除され、Djangoは影響を受けるすべてのオブジェクトを確認ページに表示するためです。

命名規則は紛らわしいことに注意してください。モデルには、記事、コメントなどの単数の名前を付ける必要があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonエラーの管理図

分類Dev

Pythonエラーの管理図

分類Dev

GenexusSDでのエラー管理

分類Dev

Linqクエリの反復中にエラーを管理する

分類Dev

ページ作成中のDjangoエラー

分類Dev

Django:django管理エリアで(poファイルの)翻訳フレーズを追加/削除/更新する方法は?

分類Dev

PythonXML要素の削除エラー

分類Dev

検証エラーをdjango管理者のデフォルトエラーとして表示する方法

分類Dev

リンクのエラー:セッションの削除中(PHOENIX)

分類Dev

Django-管理者エラーメールに別のメールバックエンドを使用する

分類Dev

django管理エラー-「フィールドリスト」の不明な列「django_content_type.name」

分類Dev

Wordpressの管理パネルエラー?

分類Dev

SWIFT OS X-永続ストアからの管理対象オブジェクトの削除:致命的なエラー

分類Dev

VBA-エラー1004列の範囲を削除中

分類Dev

Django:移行エラーのloaddata

分類Dev

Djangoの反復エラー

分類Dev

Djangoの「NoReverseMatch」エラー

分類Dev

Django管理者のデフォルトのクエリセットをオーバーライドする

分類Dev

DjangoモデルOneToOneField:管理者の「このフィールドは必須です」エラー

分類Dev

Django管理者、次のフィルターでクエリパラメーターを保持する方法

分類Dev

外部キーエラーのないdjango中間モデル

分類Dev

Django:Google AppEngineでの移行中の主要なエラー

分類Dev

Visual Studio 2012:ソース管理エクスプローラーからプロジェクトの削除プロジェクトを削除する方法

分類Dev

Excelでの流出エラーの削除

分類Dev

Windows での再帰的削除のエラー

分類Dev

Django-taggit TaggableManager()が管理エラーを生成

分類Dev

Django +チャネル+ Daphne +キャディ+管理ファイルのアップロード= 413エラー

分類Dev

Django:管理サイトのようにデータセットとして編集します。エラー

分類Dev

DEBUG = Falseの場合のDjango管理エラー(常にログインに数回必要)(プロダクション)

Related 関連記事

  1. 1

    Pythonエラーの管理図

  2. 2

    Pythonエラーの管理図

  3. 3

    GenexusSDでのエラー管理

  4. 4

    Linqクエリの反復中にエラーを管理する

  5. 5

    ページ作成中のDjangoエラー

  6. 6

    Django:django管理エリアで(poファイルの)翻訳フレーズを追加/削除/更新する方法は?

  7. 7

    PythonXML要素の削除エラー

  8. 8

    検証エラーをdjango管理者のデフォルトエラーとして表示する方法

  9. 9

    リンクのエラー:セッションの削除中(PHOENIX)

  10. 10

    Django-管理者エラーメールに別のメールバックエンドを使用する

  11. 11

    django管理エラー-「フィールドリスト」の不明な列「django_content_type.name」

  12. 12

    Wordpressの管理パネルエラー?

  13. 13

    SWIFT OS X-永続ストアからの管理対象オブジェクトの削除:致命的なエラー

  14. 14

    VBA-エラー1004列の範囲を削除中

  15. 15

    Django:移行エラーのloaddata

  16. 16

    Djangoの反復エラー

  17. 17

    Djangoの「NoReverseMatch」エラー

  18. 18

    Django管理者のデフォルトのクエリセットをオーバーライドする

  19. 19

    DjangoモデルOneToOneField:管理者の「このフィールドは必須です」エラー

  20. 20

    Django管理者、次のフィルターでクエリパラメーターを保持する方法

  21. 21

    外部キーエラーのないdjango中間モデル

  22. 22

    Django:Google AppEngineでの移行中の主要なエラー

  23. 23

    Visual Studio 2012:ソース管理エクスプローラーからプロジェクトの削除プロジェクトを削除する方法

  24. 24

    Excelでの流出エラーの削除

  25. 25

    Windows での再帰的削除のエラー

  26. 26

    Django-taggit TaggableManager()が管理エラーを生成

  27. 27

    Django +チャネル+ Daphne +キャディ+管理ファイルのアップロード= 413エラー

  28. 28

    Django:管理サイトのようにデータセットとして編集します。エラー

  29. 29

    DEBUG = Falseの場合のDjango管理エラー(常にログインに数回必要)(プロダクション)

ホットタグ

アーカイブ