Django数据库自学习
我有一个依赖于其他型号的系统,但我想让它更开放一些,因为我的用户有时需要更多 目前,为了论证起见,我在Django数据库自学习,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我有一个依赖于其他型号的系统,但我想让它更开放一些,因为我的用户有时需要更多 目前,为了论证起见,我在作者模型中有两位作者 john, james 当用户添加一本书,而作者不可用时,如何在表单中添加其他字段,如果选中该字段,则会生成一个额外字段,用户可以在该字段中输入作者的姓名,表单处理方式是在提交时添加并选择新作者 型号.PY class Author(models.Model): name = models.CharField(max_length=30) class Autho
作者
模型中有两位作者
john, james
当用户添加一本书,而作者
不可用时,如何在表单中添加其他
字段,如果选中该字段,则会生成一个额外字段,用户可以在该字段中输入作者的姓名
,表单处理方式是在提交时添加并选择新作者
型号.PY
class Author(models.Model):
name = models.CharField(max_length=30)
class AuthorForm(ModelForm):
class Meta:
model = Author
def new(request, template_name='authors/new.html'):
if request.method == 'POST':
form = AuthorForm(request.POST, request.FILES)
if form.is_valid():
newform = form.save(commit=False)
newform.user = request.user
newform.save()
return HttpResponseRedirect('/')
else:
form = AuthorForm()
context = { 'form':form, }
return render_to_response(template_name, context,
context_instance=RequestContext(request))
FORMS.PY
class Author(models.Model):
name = models.CharField(max_length=30)
class AuthorForm(ModelForm):
class Meta:
model = Author
def new(request, template_name='authors/new.html'):
if request.method == 'POST':
form = AuthorForm(request.POST, request.FILES)
if form.is_valid():
newform = form.save(commit=False)
newform.user = request.user
newform.save()
return HttpResponseRedirect('/')
else:
form = AuthorForm()
context = { 'form':form, }
return render_to_response(template_name, context,
context_instance=RequestContext(request))
视图.PY
class Author(models.Model):
name = models.CharField(max_length=30)
class AuthorForm(ModelForm):
class Meta:
model = Author
def new(request, template_name='authors/new.html'):
if request.method == 'POST':
form = AuthorForm(request.POST, request.FILES)
if form.is_valid():
newform = form.save(commit=False)
newform.user = request.user
newform.save()
return HttpResponseRedirect('/')
else:
form = AuthorForm()
context = { 'form':form, }
return render_to_response(template_name, context,
context_instance=RequestContext(request))
假设您的图书模型是:
class Book(models.Model):
author = models.ForeignKey(Author)
#etc.
试着这样做:
class BookForm(ModelForm):
other = forms.CharField(max_length=200, required=False)
def clean(self, *args, **kwargs):
other = self.cleaned_data.get('other')
author = self.cleaned_data.get('author')
if author is None or author == '':
self.cleaned_data['author'] = Author(name=other).save()
return self.cleaned_data
class Meta:
model = Book
如果作者是一个多领域的人:
类图书格式(模型格式):
其他=forms.CharField(最大长度=200,必需=False)
假设您的图书模型是:
class Book(models.Model):
author = models.ForeignKey(Author)
#etc.
试着这样做:
class BookForm(ModelForm):
other = forms.CharField(max_length=200, required=False)
def clean(self, *args, **kwargs):
other = self.cleaned_data.get('other')
author = self.cleaned_data.get('author')
if author is None or author == '':
self.cleaned_data['author'] = Author(name=other).save()
return self.cleaned_data
class Meta:
model = Book
如果作者是一个多领域的人:
类图书格式(模型格式):
其他=forms.CharField(最大长度=200,必需=False)