簡體   English   中英

Django 拋出 AttributeError: 'str' object has no attribute '_meta' when I register my Model

[英]Django throws AttributeError: 'str' object has no attribute '_meta' when I register my Model

我是m novice and I didn找到解決這個問題的方法。 m writing code for a blog. I have a model Post where I want to create field author which is ForeighKey to User. If I make migration without admin.site.register - everything is ok. But then I m writing code for a blog. I have a model Post where I want to create field author which is ForeighKey to User. If I make migration without admin.site.register - everything is ok. But then I m writing code for a blog. I have a model Post where I want to create field author which is ForeighKey to User. If I make migration without admin.site.register - everything is ok. But then I試圖將我的 Model 注冊到 Django 管理員它拋出 AttributeError: 'str' object has no attribute '_meta'

評論:我的想法是每個用戶(注冊后)都可以創建帖子。 我想使用用戶 model 顯示有關作者的一些信息

模型.py

from django.db import models
from django.contrib.auth import get_user_model


class Post(models.Model):
    author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, verbose_name='Автор', related_name='posts', null=True)
    title = models.CharField(verbose_name='Заголовок объявления', max_length=255)
    text = models.TextField(verbose_name='Текст объявления')
    CATEGORIES = (
        ('T','Танки'),
        ('HM','Хилы'),
        ('DD','ДД'),
        ('TrM','Торговцы'),
        ('GM','Гилдмастеры'),
        ('QG','Квестгиверы'),
        ('FM','Кузнецы'),
        ('LM','Кожевники'),
        ('PM','Зельевары'),
        ('WM','Мастера заклинаний')
    )

    category = models.CharField(verbose_name='Категория', max_length=3, choices=CATEGORIES)
    pub_date = models.DateTimeField(auto_now_add=True, verbose_name='Дата создания')

    class Meta:
        verbose_name = 'Пост'
        verbose_name_plural = 'Посты'

    def __str__(self):
        return self.title

管理員.py

from django.contrib import admin
from .models import *

admin.site.register('Post')

您需要傳遞對 class 的引用,而不是字符串文字,因此:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

您將app_name替換為您在其中定義Post model 的應用程序的名稱。


注意:請不要使用通配符導入 [quantifiedcode.com] 它使語句的可預測性降低,如果您稍后決定更改某個模塊中導出的內容,它很容易導致代碼失敗,而且它可以覆蓋變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM