gpt4 book ai didi

django - Django ModelForm 中的反转逻辑

转载 作者:行者123 更新时间:2023-12-02 05:20:23 26 4
gpt4 key购买 nike

我在 Django 中有一个模型,其中有一个 public bool 字段,用于控制条目是公共(public)的还是私有(private)的。

但是,在表单中,我应该显示一个相反的逻辑:private 设置的复选框。

class MyModelForm(forms.ModelForm):
private = forms.BooleanField(label="Make this entry private")

class Meta:
model = models.MyModel

我该如何离开这里?

最佳答案

这是一个自定义表单字段,它接受一个 bool 值并翻转它。模型的 public 字段保持不变,但表单将使用这个新字段来显示相反的 private 值。

prepare_value 翻转模型的值以在表单上显示相反的值。 to_python 从提交的表单中获取任何传入值并将其翻转以准备保存到模型中。

class OppositeBooleanField(BooleanField):
def prepare_value(self, value):
return not value # toggle the value when loaded from the model

def to_python(self, value):
value = super(OppositeBooleanField, self).to_python(value)
return not value # toggle the incoming value from form submission


class MyModelForm(forms.ModelForm):
public = OppositeBooleanField(label='Make this entry private', required=False)

class Meta:
model = MyModel

[更新答案。前面的答案仅处理保存切换的表单值,当该值已经存在时无法正确显示它。]

关于django - Django ModelForm 中的反转逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21419284/

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