使用以下我可以获得一个多选区域,但我想要的是让用户能够使用<input type="text">
为作者姓名添加作者,并为标题下拉。它的编写方式我们必须知道所有可能的书籍作者都不合理。理想情况下会有+所以有人可以将多位作者添加到同一本书中。
我使用的是基于表单的视图,您可以在撰写此问题时查看代码here
from django.db import models
from django import forms
TITLE_CHOICES = (('MR', 'Mr.'),('MRS', 'Mrs.'),('MS', 'Ms.'))
class Author(models.Model):
name = models.CharField(max_length=80)
title = models.CharField(max_length=3, choices=TITLE_CHOICES)
def __unicode__(self):
return self.name
class Book(models.Model):
name = models.CharField(max_length=200)
authors = models.ManyToManyField(Author)
def __unicode__(self):
return self.name
class AuthorForm(forms.ModelForm):
class Meta:
model = Author
fields = '__all__'
widgets = {
'name': forms.TextInput(attrs={'cols': 80, 'rows': 20}),
'title': forms.TextInput(attrs={'cols': 80, 'rows': 20})
}
class BookForm(forms.ModelForm):
class Meta:
model = Book
fields = '__all__'
def save(self, request, commit=True):
super(BookForm, self).save(request)
pass
html可能是这样的(具有不同的name
属性)
<input type="text" name="booktitle">
<div>
<select><option>Mr</option><option>Mrs</option></select>
<input type="text" name="authorName">
<button name="clickOneToAddAnotherAuthor">
</div>
<div>
<select><option>Mr</option><option>Mrs</option></select>
<input type="text" name="authorName">
<button name="clickOneToAddAnotherAuthor">
</div>
答案 0 :(得分:1)
您可以使用ChoiceField
class AuthorForm(forms.ModelForm):
title = forms.ChoiceField()
class Meta:
model = Author
fields = '__all__'
widgets = {
'name': forms.TextInput(attrs={'cols': 80, 'rows': 20}),
'title': forms.Select(attrs={'cols': 80, 'rows': 20})
}