对象没有ID

时间:2012-03-10 19:06:25

标签: django django-models django-admin

在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)

2 个答案:

答案 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)
    ...