gpt4 book ai didi

django - 在 View 中保存时设置 user_id - Django

转载 作者:行者123 更新时间:2023-12-04 22:35:09 26 4
gpt4 key购买 nike

我需要在添加 View 中设置创建帖子的用户:

@login_required 
def add(request):
if request.method == 'POST':
form = BusinessForm(request.POST)
form.user_id = request.user.id
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('listing.views.detail'), args=(f.id))
else:
form = BusinessForm()
return render_to_response('business/add.html', {'form':form},
context_instance=RequestContext(request))

我分配了用户 id form.user_id = request.user.id 但保存时,它仍然给我一个错误 Column user_id cannot be null
难道我做错了什么?谢谢

编辑:

我从模型中的表单中排除了用户:
class BusinessForm(ModelForm):
class Meta:
model = Business
exclude = ('user',)

这可能是导致问题的原因吗?我该如何解决这个问题?

编辑2:

按照建议编辑了我的 BusinessForm() 类,但没有用:
class BusinessForm(ModelForm):
class Meta:
model = Business
exclude = ('user',)
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
return super(BusinessForm, self).__init__(*args, **kwargs)

def save(self, *args, **kwargs):
kwargs['commit']=False
obj = super(BusinessForm, self).save(*args, **kwargs)
if self.request:
obj.user = self.request.user
obj.save()

商业模式
class Business(models.Model):
name = models.CharField(max_length=200)
user = models.ForeignKey(User, unique=False)
description = models.TextField()
category = models.ForeignKey(Category)
address = models.CharField(max_length=200)
phone_number = models.CharField(max_length=10)
website = models.URLField()
image = models.ImageField(upload_to='business_pictures',blank=True)

最佳答案

您不必为此使用 initsave 覆盖。

您只是在表单上设置了一个属性,而表单对它没有任何作用。它不像模型实例那么神奇(你的表单没有 user_id 属性)。

由于您的表单是 ModelForm ,您可以简单地使用 commit=False 调用 save 来获取未保存的实例,设置用户,然后在实例上调用 save

 if request.method == 'POST':
form = BusinessForm(request.POST)
if form.is_valid():
business = form.save(commit=False)
business.user = request.user
business.save()

关于django - 在 View 中保存时设置 user_id - Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8632087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com