class TempUser(models.Model):
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
bank_account = models.ForeignKey(BankAccount)
def save(self, *args, **kwargs):
if not self.bank_account:
bank_account = BankAccount()
bank_account.save()
self.bank_account = bank_account
super(TempUser, self).save(*args, **kwargs)
但我得到了下一个例外:
File "models.py", line 134, in main
fill_predefined_data()
File "models.py", line 121, in fill_predefined_data
user.save()
File "models.py", line 41, in save
if not self.bank_account:
File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/related.py", line 343, in __get__
raise self.field.rel.to.DoesNotExist
__main__.DoesNotExist
答案 0 :(得分:3)
您可以更改TempUser模型
bank_account = models.ForeignKey(BankAccount, null=True)
或将您的病情改为:
if not hasattr(self, 'bank_account'):
答案 1 :(得分:0)
不确定,但可能问题在于TempUser
尚未创建。
您可以做的一件事是使用pre_save
(look here)或post_save
并在其中创建BankAccount
。
或者您可以使用TempUser
实际保存commit=False
,将BankAccount
克里特保存,然后保存TempUser
答案 2 :(得分:0)
我不确定为什么你认为这些链接中的任何一个是相关的。它们都访问模型上的正常字段 - id和char字段。您正在访问ForeignKey,它当然是对可能存在或可能不存在的另一个模型实例的引用。在你的情况下,它显然不存在。
最简单的方法是检查FK id而不是实际对象:
if not self.bank_account_id:
bank_account = BankAccount()
bank_account.save()
self.bank_account = bank_account
答案 3 :(得分:0)
似乎没有创建bank_account
。
您在BankAccount
中有任何必填字段吗?