【发布时间】:2012-01-27 18:14:12
【问题描述】:
我需要在添加视图中设置创建帖子的用户:
@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)
【问题讨论】:
-
我不认为排除一个字段会导致问题,请查看this以获取如何实现您想要的示例
标签: django django-forms