【发布时间】:2020-11-15 18:32:57
【问题描述】:
models.py
from django.db import models
from django.contrib.auth.models import User
class Elements(models.Model):
element = models.CharField(max_length=10, unique=True)
def __str__(self):
return self.element
class Hero(models.Model):
added = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
name = models.CharField(max_length=10, unique=True)
element = models.ManyToManyField(Elements, blank=True)
def __str__(self):
return self.name
forms.py
from django import forms
from .models import Elements, Hero
class HeroForm(forms.ModelForm):
class Meta:
model = Hero
exclude = [
'added'
]
widgets = {
'element': forms.CheckboxSelectMultiple
}
views.py
from django.shortcuts import render
from .forms import HeroForm
def home(request):
form = HeroForm(request.POST or None)
if form.is_valid():
hero = form.save(commit=False)
hero.added = request.user
hero.save()
form = HeroForm()
return render(request, 'home.html', {'form': form})
每当我尝试在保存之前像上面在views.py 中显示的那样操作模型表单时,元素的(manytoamyfield)数据会自动设置为null。但是,如果我将表单保存为用户选择的已保存元素的数据。
如何在保存表单之前操作表单数据并保持多字段数据原样?
提前致谢
【问题讨论】:
标签: django django-forms manytomanyfield