python - Django 表单 - 将布尔字段更新为 true
问题描述
我正在尝试更新一个布尔字段,但我遇到了这个问题:save() 得到了一个意外的关键字参数“update_fields”。
我遇到了不同的问题:一开始,当卖家填写表格时,它正在创建一个新渠道。我只想更新当前频道。
逻辑=消费者与卖家创建一个渠道(渠道不活跃)->如果卖家想要启动它。他有一种形式可以使它成为现实并启动它。
楷模:
class Sugargroup(models.Model):
consumer = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="sugargroup_consumer", blank=True, null=True)
seller = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="sugargroup_seller")
is_active = models.BooleanField('Make it happen', default=False)
slug = models.SlugField(editable=False, unique=True)
意见:
@method_decorator(login_required(login_url='/cooker/login'),name="dispatch")
class CheckoutDetail(generic.DetailView, FormMixin):
model = Sugargroup
context_object_name = 'sugargroup'
template_name = 'checkout_detail.html'
form_class = CreateSugarChatForm
validation_form_class = LaunchSugargroupForm
def get_context_data(self, **kwargs):
context = super(CheckoutDetail, self).get_context_data(**kwargs)
context['form'] = self.get_form()
context['validation_form'] = self.get_form(self.validation_form_class) #self.validation_form_class()
return context
def form_valid(self, form):
if form.is_valid():
form.instance.sugargroup = self.object
form.instance.user = self.request.user
form.save()
return super(CheckoutDetail, self).form_valid(form)
else:
return super(CheckoutDetail, self).form_invalid(form)
def form_valide(self, validation_form):
if validation_form.is_valid():
validation_form.instance.sugargroup = self.object
#validation_form.instance.seller = self.request.user
validation_form.save(update_fields=["is_active"])
return super(CheckoutDetail, self).form_valid(validation_form)
else:
return super(CheckoutDetail, self).form_invalid(validation_form)
def post(self,request,*args,**kwargs):
self.object = self.get_object()
form = self.get_form()
validation_form = self.validation_form_class(request.POST) #validation_form = self.get_form(self.validation_form_class)
if form.is_valid():
return self.form_valid(form)
elif validation_form.is_valid():
return self.form_valide(validation_form)
else:
return self.form_valid(form)
def get_success_url(self):
return reverse('checkout:checkout_detail',kwargs={"slug":self.object.slug})
形式
class LaunchSugargroupForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
super(LaunchSugargroupForm, self).__init__(*args,**kwargs)
self.helper = FormHelper()
self.helper.form_method="post"
self.helper.layout = Layout(
Field("is_active",css_class="single-input"),
)
self.helper.add_input(Submit('submit','Launch the channel',css_class="btn btn-primary single-input textinput textInput form-control"))
class Meta:
model = Sugargroup
fields = [
'is_active'
]
解决方案
尝试这个:
validation_form.is_active = True
validation_form.save()
推荐阅读
- firebase - 当文档在设备外更新时,Firestore 的离线持久性如何表现?
- javascript - 制表符 - 标题排序
- oracle - 运行程序时,用户必须能够在两个参数中的一个参数中输入值,前提是两者不能保持空白
- keras - Keras 中超过 1700 个类别的多标签分类
- c++ - 未初始化的警告需要 -O2
- php - SQL 计数返回 0
- tfs - 如何在 TFS 上的另一个集合上发布我的项目的第二个版本?
- dc.js - dc.js (version 3.0.7) - 无法绘制 rangeChart ('focusChart' of undefined error)
- typescript - 如何在另一个文件中导入类属性 - Vue/Typescript
- typescript - Ionic 的网络原生插件缺少提供程序