1

私はdjangoの初心者です。

djangoに関する本に従ってサンプルを実行しようとしています。

モデルクラスに「classAdmin」を追加しましたが、django adminインターフェースでは、「Users」、「Groups」、「Sites」しか表示されず、モデルクラスは表示されません。

エラーや警告の情報がないので、何が起こったのか、次に何をすればいいのかわかりません。

何か助けはありますか?

from django.db import models

# Create your models here.
class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address=models.CharField(max_length=50)
    city=models.CharField(max_length=60)
    state_province=models.CharField(max_length=30)
    country=models.CharField(max_length=50)
    website=models.URLField()

    def __str__(self):
        return self.name

    class Admin:
        pass

class Author(models.Model):
    salutation=models.CharField(max_length=10)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email=models.EmailField()
    headshot=models.ImageField(upload_to='/tmp')

    def __str__(self):
        return '%s %s' % (self.first_name, self.last_name)

    class Admin:
        pass

class Book(models.Model):
    title=models.CharField(max_length=10)
    authors=models.ManyToManyField(Author)
    publisher=models.ForeignKey(Publisher)
    publication_date = models.DateField()

    def __str__(self):
        return self.title
4

5 に答える 5

3

管理サイトを介してモデルを編集できるようにするには、次の3つのことを行う必要があります。

  1. コードを使用してアプリディレクトリにファイル「admin.py」を作成します(https://docs.djangoproject.com/en/dev/ref/contrib/admin/#modeladmin-objectsを参照)。

    from django.contrib import admin
    from your_app.models import Publisher, Author, Book
    
    admin.site.register(Author)
    admin.site.register(Publisher)
    admin.site.register(Book)
    
  2. urls.pyに次を追加します(https://docs.djangoproject.com/en/dev/ref/contrib/admin/#hooking-adminsite-instances-into-your-urlconfを参照)。

    from django.conf.urls import patterns, url, include
    from django.contrib import admin
    
    admin.autodiscover()
    
    urlpatterns = patterns('',
        (r'^admin/', include(admin.site.urls)),
        # your urls goes here
    )
    
  3. あなたのsettings.pyが以下を満たしていることを確認してください(https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overviewを見てください):

    TEMPLATE_CONTEXT_PROCESSORS = (
        'django.contrib.messages.context_processors.messages',
        #other context processors
    )
    
    MIDDLEWARE_CLASSES = (
        'django.contrib.messages.middleware.MessageMiddleware',
        # other middleware
    )
    
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.messages',
        'django.contrib.sessions',
        # other apps
    )
    
于 2012-05-24T05:23:16.400 に答える
2

admin.pyを作成し、以下のコードに従う必要があります

from xxxxx.models import Publisher
from django.contrib import admin

admin.site.register(Publisher)
admin.site.register(Author)
admin.site.register(Book)
于 2012-05-24T04:52:51.080 に答える
1

管理サイトへのモデルの登録に関する部分を見逃しました。

于 2012-05-24T04:49:31.870 に答える
1

あなたがそこでしたことは、それが実際にどのように行われたかではありません。正しい方法は、にモデルをmodels.py、に管理クラスを含めることadmin.pyです。

models.py

from django.db import models

# Create your models here.
class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address=models.CharField(max_length=50)
    city=models.CharField(max_length=60)
    state_province=models.CharField(max_length=30)
    country=models.CharField(max_length=50)
    website=models.URLField()

    def __str__(self):
        return self.name


class Author(models.Model):
    salutation=models.CharField(max_length=10)
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40)
    email=models.EmailField()
    headshot=models.ImageField(upload_to='/tmp')

    def __str__(self):
        return '%s %s' % (self.first_name, self.last_name)


class Book(models.Model):
    title=models.CharField(max_length=10)
    authors=models.ManyToManyField(Author)
    publisher=models.ForeignKey(Publisher)
    publication_date = models.DateField()

    def __str__(self):
        return self.title

admin.py

from django.contrib import admin
from myproject.myapp.models import Author, Publisher


class AuthorAdmin(admin.ModelAdmin):
    pass


class PublisherAdmin(admin.ModelAdmin):
    pass


admin.site.register(Author, AuthorAdmin)
admin.site.register(Publisher, PublisherAdmin)

また、管理者クラスが空でpass、それらが含まれている場合は、それらをすべて一緒に省略できるため、次のようになります。

admin.py

from django.contrib import admin
from myproject.myapp.models import Author, Publisher


admin.site.register(Author)
admin.site.register(Publisher)
于 2012-05-24T04:54:36.507 に答える
0

古いメソッドを使用して、管理インターフェースに表示されるモデルを宣言しています。このメソッドは現在廃止されています。マニュアルを検討し、使用しているdjangoのバージョンを明確にしてください。そして、あなたが欲しいものを手に入れる方法。

于 2012-05-24T04:55:32.717 に答える