gpt4 book ai didi

python - 带有 ManyToMany 的 Django 表单使用 TextInput 而不是 MultiSelect

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:07 25 4
gpt4 key购买 nike

使用以下内容我可以获得多选区域,但我希望用户能够使用 <input type="text"> 添加作者作者姓名和标题下拉菜单。按照它的编写方式,我们必须知道所有可能的书籍作者,这是不合理的。理想情况下会有+,这样有人就可以将多个作者添加到同一本书中。

我正在使用基于表单的 View ,您可以看到撰写此问题时的代码 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>

最佳答案

您可以使用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})
}

关于python - 带有 ManyToMany 的 Django 表单使用 TextInput 而不是 MultiSelect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com