对象没有ID

Fat*_*dle 1 django django-models django-admin

在Django管理站点中单击"保存"(创建新实例后)后,我得到了一个

AttributeError at /admin/bankaccount/bank_account/add/
'Bank_Account' object has no attribute 'id'
Run Code Online (Sandbox Code Playgroud)

我没有在模型中创建任何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
Run Code Online (Sandbox Code Playgroud)

我的admin.py

from bankaccount.models import Bank_Account
from django.contrib import admin

admin.site.register(Bank_Account)
Run Code Online (Sandbox Code Playgroud)

Jam*_*ett 6

我假设你的代码示例中已经覆盖了模型中的__init__(构造函数)Bank_Account.但是你没有打电话给超级.实际上,您采取的操作应该表示为模型中的默认值:

class BankAccount(models.Model):
    iban = models.CharField(max_length = 30, default="0")
    bic = models.CharField(max_length = 30, default="0")
Run Code Online (Sandbox Code Playgroud)

这应该工作正常.但是我不确定你为什么要那些默认值; 我认为没有违约,null=False, blank=False在这种情况下更合适,因为银行账户肯定会同时拥有IBAN和BIC.不过,也许我在那里误解了你的域名问题.

关键是:如果不确保在超类中完成构造函数的所有工作,请不要覆盖构造函数.