Django формы. ChoiceField всегда изменяется - PullRequest
0 голосов
/ 13 декабря 2018

Django==1.10

Я хочу использовать models.BooleanField в качестве forms.ChoiceField в приложении admin.

models.py

from __future__ import unicode_literals
from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=255)
    bool_field = models.BooleanField()

admin.py

from django.contrib import admin
from .models import MyModel
from .forms import MyModelForm

@admin.register(MyModel)
class TemplateAdmin(admin.ModelAdmin):
    form = MyModelForm
    list_display = ['name','bool_field']

forms.py

from django import forms

class MyModelForm(forms.ModelForm):
    bool_choices = ((True, "Yes"),(False, "No"))
    bool_field = forms.ChoiceField(choices=bool_choices)

Все отображается так, как я хочу, но фактически каждый раз, когда я сохраняю экземпляр, ссылка History показывает, что bool_field был изменен, даже если это не так.

Я пытался изменить bool_field на TypedChoiceField с coerce=bool, но это не сработало.После того, как я изменил и сохранил экземпляр, значение остается прежним.

Пожалуйста, сообщите, что я, вероятно, должен изменить, чтобы History работал правильно.

1 Ответ

0 голосов
/ 13 декабря 2018

Попробуйте указать, что bool_field не требуется, например:

bool_field = forms.ChoiceField(choices=bool_choices, required=False)
...