#python-3.x #django #postgresql #django-models #pgadmin
Вопрос:
после выполнения команды python manage.py inspectdb, у меня возникла следующая ошибка
Ошибка типа: «Мета-класс» получил недопустимые атрибуты: ifsc,банк,филиал,адрес,город,район,штат
моя модель выглядит следующим образом
from django.db import models
class Banks(models.Model):
class Meta:
db_table = 'banks'
name = models.CharField(max_length=49, blank=True, null=True)
id = models.BigIntegerField(primary_key=True)
class Meta:
managed = False
db_table = 'branches'
ifsc = models.CharField(primary_key=True, max_length=11)
bank = models.ForeignKey('Banks', models.DO_NOTHING, blank=True, null=True)
branch = models.CharField(max_length=250, blank=True, null=True)
address= models.CharField(max_length=250, blank=True, null=True)
city = models.CharField(max_length=50, blank=True, null=True)
district = models.CharField(max_length=50, blank=True, null=True)
state = models.CharField(max_length=26, blank=True, null=True)
Комментарии:
1. поля модели должны находиться в классе модели, а не в ее
Meta
классе. Также два определенияMeta
не будут работать… Это действительно результатinspectdb
, или вы отредактировали его таким образом?2. Вы не должны указывать поля базы данных в
Meta
классе, только мета-параметры.3. Inspectdb произвел это? Это звучит очень странно, так как выглядит неправильно отформатированным/с отступом. Вы изменили выходные данные inspectdb? Вы перенаправили его вывод на models.py файл (т. е.
python manage.py inspectdb > models.py
)?4. два мета были выводом inspectdb. я перепутал вещи, чтобы выяснить, могу ли я избавиться от ошибки. спасибо, что предоставленное вами решение сработало. @АбдулАзизБаркат
5. @jay
inspectdb
не должен давать такой вывод (он должен был дать вам 2 класса моделей со своими собственнымиMeta
)… В любом случае, если вы говорите об ответе ниже, он был дан Виллемом, а не мной, я только немного отредактировал его, чтобы удалить текст, который был ошибочно скопирован с вопроса, примите ответ, если он решил вашу проблему.
Ответ №1:
Похоже, вы сделали отступ неправильно. Поля задаются на уровне класса, поэтому:
from django.db import models
class Banks(models.Model):
#↓ Banks class attributes
id = models.BigIntegerField(primary_key=True)
# ↓ Banks class attributes
name = models.CharField(max_length=49, blank=True, null=True)
class Meta:
db_table = 'banks'
что касается второй меты, то она должна принадлежать другому классу моделей.