我修改了我的代码以使用forms.ModelForm
,以便我可以修改网页表单的宽度。我现在遇到的问题是ForeignKeys
不适用于forms.Form,我需要在表单中保存活动用户,以及提交请求的当前时间。
以下是我的文件(我排除了所有必要的导入)和当前的解决方法,它给了我以下错误:table chemrun_chemrun has no column named owner_id
。我很高兴有任何帮助来解决这个问题:)
来自models.py
class ChemRun(models.Model):
owner = models.ForeignKey('auth.User')
来自forms.py 的
class ChemRunForm(forms.ModelForm):
title = forms.CharField(max_length=50)
status = forms.CharField(max_length=20, initial="In queue")
created_date = forms.DateTimeField(initial=timezone.now, required=False)
def __unicode__(self):
return self.title
class Meta:
model = ChemRun
exclude = {'created_date', 'status', 'owner'}
来自views.py
@verified_email_required
def create(request):
if request.POST:
form = ChemRunForm(request.POST)
if form.is_valid():
m = form.save(commit=False)
m.created_date = timezone.now
m.owner = request.user
m.save()
return HttpResponseRedirect('/accounts/profile')
else:
form = ChemRunForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('interface/newrun.html', args, context_instance=RequestContext(request))
urlpatterns = [
url(r'^create/$', 'chemrun.views.create', name='create'),
]
答案 0 :(得分:1)
我看到了两个解决问题的实用方法:
你在评论中说过,在命令之前,makemigrations'没有问你什么,现在确实如此,这是因为现在你在那张桌子上有记录,如果你添加一个新列,django或postgres都不知道在旧记录中该列中放什么,也许你可以冲洗'你的数据库?当然,只有它是一个开发数据库。