作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道如何在以下表格中color
(多对多字段)可以由来自 CheckboxSelectMultiple
的值填充小部件。
#models.py
class Color(models.Model):
RED = 1
BLACK = 2
COLOR_CHOICES = (
(RED, _('Red')),
(BLACK, _('Black')),
)
name = models.CharField(_('Color'), max_length=512,
choices=COLOR_CHOICES, blank=True)
class Car(models.Model):
color = models.ManyToManyField(Color, blank=True, null=True)
def save(self):
self.slug = slugify(self.name)
super(Car, self).save()
class AddCar(forms.ModelForm):
color = forms.MultipleChoiceField(
choices=Color.COLOR_CHOICES,
widget=forms.CheckboxSelectMultiple(),
required=False
)
def add(request):
if request.method == 'POST':
form = AddCar(request.POST)
...
if form.is_valid():
car = form.save(commit=False)
for c in request.POST.getlist('color'):
car.color.add(c)
car.save()
form.save_m2m()
return redirect('/')
'Car' instance needs to have a primary key value before a many-to-many relationship can be used.
最佳答案
你在做什么form.save(commit=False)
其中实际上并未在 DB 中创建记录,因此它无法存储 M2M 字段。做 form.save_m2m()
保存表格后。
或者从您的代码中,您可以移动 car.color.add()
保存 car
后.而且你也不需要 form.save(commit=False)
.
关于django - 如何在 Django 表单中使用多个复选框保存多对多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11642579/
我是一名优秀的程序员,十分优秀!