![](/img/trans.png)
[英]MySQL gives an “Unknown column 'user.id' in 'field list'” error using Django's automatic id
[英]Django gives IntergrityError, user.id NOT null, don't know why
我正在嘗試創建一個用於發送電子郵件以更改用戶條目中的電子郵件的access_emailchangeauth.user_id may not be NULL
,由於某種原因,當我單擊表單上的access_emailchangeauth.user_id may not be NULL
時,它會給我access_emailchangeauth.user_id may not be NULL
。 我不知道為什么。
代碼在下面
def changeEmail(request):
data = request.POST if request.method == 'POST' else None
if data:
form = ChangeEmailForm(data)
if form.is_valid():
form.save(user=request.user)
else:
a = request.user
a = u.objects.get(username__iexact=a)
form = UserModificationForm(instance=a)
form2 = ChangeEmailForm()
return render('accounts/modify.html',{'form': form, 'form2': form2, 'usr': a})
#forms.py
class ChangeEmailForm(ModelForm):
class Meta:
model = EmailChangeAuth
fields = ['new_email']
def save(self, *args, **kwargs):
user = kwargs.pop('user')
self.user = user
print user
super(ChangeEmailForm, self).save(*args, **kwargs)
#models.py
class EmailChangeAuth(models.Model):
auth_code = UUIDField(auto=True, unique=True)
user = models.ForeignKey(u)
new_email = models.EmailField(max_length=256)
def __unicode__(self):
return unicode(self.auth_code)
由於您沒有將用戶包括在字段列表中,因此不會將其傳遞給ModelForm的實例構造函數。
因此,您想要的是更改表單實例的用戶屬性,而不是表單對象本身的屬性。 在.save()中,將self.user更改為self.instance.user。 那應該讓你走。
但是,我還想建議這種機制通常是一種反模式:為什么無論如何,如果您要填充的是必填字段,為什么不允許用戶成為ModelForm上的字段?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.