在Django管理站点中单击“保存”(创建新实例后)后,我得到了
AttributeError at /admin/bankaccount/bank_account/add/
'Bank_Account' object has no attribute 'id'
我没有在模型中创建任何ID。该教程说,ID是自动管理的。 知道我为什么这么做吗?
我的模特:
class Bank_Account(models.Model):
iban = models.CharField(max_length = 30)
bic = models.CharField(max_length = 30)
def __init__(self):
self.iban = 0
self.bic = 0
我的admin.py
from bankaccount.models import Bank_Account
from django.contrib import admin
admin.site.register(Bank_Account)
答案 0 :(得分:6)
我假设您的代码示例中已覆盖__init__
模型中的Bank_Account
(构造函数)。但是你没有打电话给超级。实际上,您采取的操作应表示为模型中的默认值:
class BankAccount(models.Model):
iban = models.CharField(max_length = 30, default="0")
bic = models.CharField(max_length = 30, default="0")
应该可以正常工作。但是我不确定你为什么要那些默认值;在这种情况下,我认为没有违约和null=False, blank=False
更合适,因为银行帐户肯定会同时拥有IBAN和BIC。也许我在那里误解了你的域名问题。
关键是:如果不确保在超类中完成构造函数的所有工作,请不要覆盖构造函数。
答案 1 :(得分:1)
我认为你需要调用父构造函数:
def __init__(self, *args, **kwargs):
models.Model.__init__(self, *args, **kwargs)
...