我正在尝试使用Django 1.10.5构建一个网站.目前我正在研究在前端编辑数据库对象的方法.我的计划是定义一个表单'EditForm',用户输入他想要编辑的对象的ID.当我只在真实网站上测试那个表单以查看我是否可以提交某些内容时,我收到以下错误:'is_valid()缺少1个必需的位置参数:'self''.我无法在代码中找到我的错误,所以提前感谢任何帮助或想法.
来自我的views.py:
def mymodel_test(request,):
form = EditForm
if request.method == 'POST':
if form.is_valid():
temp_id = form(request.POST)
return render(request, 'mymodel_test.html', {
"Title": "Test",
"form": form
})
Run Code Online (Sandbox Code Playgroud)
forms.py中的EditForm:
class EditForm(forms.Form):
id = forms.IntegerField(label='Edit object with following ID')
Run Code Online (Sandbox Code Playgroud)
mymodel_test.html:
{% extends "base.html" %}
{% block content %}
<form method="post" action="">
{% csrf_token %}
<table>
{{ form }}
</table>
<input type="submit" value="Edit"/>
</form>
{% endblock %}
Run Code Online (Sandbox Code Playgroud) 我正在使用安装了以下应用程序的Django 1.8.7:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'bootstrap3',
'myapp',
'storages',
'rest_framework',
'django_tables2',]
Run Code Online (Sandbox Code Playgroud)
我使用内置的django.contrib.auth.urls创建用于登录,更改密码等的页面。我将settings.py中的LOGOUT_REDIRECT_URL设置为“ / home”,就像使用LOGIN_REDIRECT_URL一样。通过页面注销用户可以正常工作,但之后我仍然保留在注销页面中。登录时这不是问题,登录重定向的工作原理与预期相同。
我的urls.py的一部分:
url(r'^accounts/', include('django.contrib.auth.urls'), {'template_name': 'registration/login.html'}),
Run Code Online (Sandbox Code Playgroud)
我的settings.py:
LOGIN_REDIRECT_URL = '/home'
LOGOUT_REDIRECT_URL = '/home'
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助或想法!
我正在使用 Django 1.11.2 开发一个网站。我使用 ModelForms 在我的网站上编辑模型实例。表单的每个字段都通过我的视图中的“初始”获取我想要编辑的实例的拟合值。它适用于除 ManyToManyFields 之外的所有字段。
相关代码如下所示:
模型.py:
class model1(models.Model):
name = models.CharField(max_length=45, blank=False, null=False)
class model2(models.Model):
name = models.CharField(max_length=45, blank=False, null=False)
relation = models.ManyToManyField(model1)
Run Code Online (Sandbox Code Playgroud)
forms.py 中的 ModelForm:
class model2_form(forms.ModelForm):
class Meta:
model = model2
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
以及我用来编辑 model2 实例的视图:
def model2_edit(request, objectid):
link = 'Model2'
model2_inst = model2.objects.get(id=objectid)
form = model2_form(initial={'name': model2_inst.name,
'relation': ???})
if request.method == 'POST':
f = model2_form(request.POST, instance=model2_inst)
if f.is_valid():
f.save()
return HttpResponseRedirect('/model2')
return render(request, "edit_db.html",
{"form": form, "link":link})
Run Code Online (Sandbox Code Playgroud)
每次我通过 ModelForm 编辑 …