在管理网站中访问模型的问题

时间:2021-07-09 00:54:06

标签: python django django-models django-views django-admin

我已经创建了 Profile 模型,它在 Django 的管理网站中运行良好,很明显,我尝试创建一个非常复杂的模型,但我不断收到错误,无论如何决定简化流程,我创建了一个非常简单的模型。

>

models.py


from django.db import models
from django.conf import settings
#from django_countries.fields import CountryField
#from phone_field import PhoneField

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    email = models.EmailField(blank=True,null=True)
    role = models.TextField(blank=True)
    location = models.TextField(blank=True)
    photo = models.ImageField(upload_to='users/%Y/%m/%d', blank=True)

    def __str__(self):
        return f'Profile for user {self.user.username}'

class Client(models.Model):
    firstname = models.CharField(blank=True, max_length=30)


    def __str__(self):
        return f'{self.firstname}'

我运行了 python manage.py makemigrationspython manage.py migrate 并且代码运行良好,我还确保删除了所有以前的迁移,因此我在迁移中成功创建了一个 0001_initial.py 文件。

我决定将我的新模型包含在 admin.py 文件中,以便我可以从 Django 的用户界面与模型进行交互

from django.contrib import admin
from .models import Profile, Client

@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
    list_display = ['user', 'photo','role']

@admin.register(Client)
class Client(admin.ModelAdmin):
    list_display = ['firstname']
    #list_display = ['firstname', 'lastname','position','country','email','phone']


这就是问题开始的地方,我可以成功地看到 Clients 模型是在管理部分创建的,但是当我单击模型时 - 我收到此错误 {{1} }

 django.db.utils.OperationalError: no such table: account_client

欢迎任何有关如何解决此问题的想法

2 个答案:

答案 0 :(得分:0)

尝试运行

python manage.py migrate --run-syncdb

运行正常迁移

python manage.py makemigrations <your-app-name>
python manage.py migrate <your-app-name>

如果这不起作用,请尝试将其添加到每个模型中:

class Meta:
        app_label = '<your-app-name>'

运行正常迁移

python manage.py makemigrations <your-app-name>
python manage.py migrate <your-app-name>

如果还是这样:

python manage.py makemigrations <your-app-name>
python manage.py migrate <your-app-name> --fake

如果所有选项都不起作用,那么您有两个选择:

  • 选项 1
  1. 手动检查数据库中是否存在表
  2. 如果表不存在,请在数据库中手动创建表。
  • 选项 2
  1. 如果它的调试数据库没有重要信息,删除它,删除迁移并再次运行迁移。

答案 1 :(得分:0)

堆栈跟踪说明了一切,您的应用似乎找不到表 account_client。当您进行迁移时一定出了问题。如果可能,从一个新的数据库开始或至少删除所有表。然后删除所有迁移文件并重做 makemigrations 命令。之后,你就可以走了!祝你好运!