0
私は、他のものとの関係が多岐にわたるモデルを持っています。私はhttps://gist.github.com/jdklub/9261959という例を使って、チェンジリストビューからmanytomanyフィールドを編集可能にしました。しかし、私が変更を加えるとき、manytomanyフィールドへの変更だけが実際に保存されています。djangoで変更が保存されないadmin changelistビュー
私ものModelFormとチェンジから多対多分野へのすべての参照を削除しようとしたadmin.py
class HostChangeList(ChangeList):
def __init__(self, request, model, list_display, list_display_links,
list_filter, date_hierarchy, search_fields, list_select_related,
list_per_page, list_max_show_all, list_editable, model_admin):
super(HostChangeList, self).__init__(request, model, list_display, list_display_links,
list_filter, date_hierarchy, search_fields, list_select_related,
list_per_page, list_max_show_all, list_editable, model_admin)
self.list_display = ('action_checkbox', 'name', 'ip', 'fagroup', 'description', 'customer_facing', 'monitored', 'puppet', 'sso')
self.list_editable = ['fagroup', 'description', 'customer_facing', 'monitored', 'puppet', 'sso']
self.list_display_links = ['name']
class HostForm(forms.ModelForm):
fagroup = forms.ModelMultipleChoiceField(queryset=FAgroup.objects.all(),widget=forms.SelectMultiple(attrs={'size': '10'}),required=False)
description = forms.CharField(required=False)
customer_facing = forms.NullBooleanField()
monitored = forms.NullBooleanField()
puppet = forms.NullBooleanField()
sso = forms.NullBooleanField()
class HostAdmin(admin.ModelAdmin):
def get_changelist(self, request, **kwargs):
return HostChangeList
def get_changelist_form(self, request, **kwargs):
return HostForm
models.py
class Host(models.Model):
name = models.CharField(max_length=200)
ip = models.GenericIPAddressField(default='0.0.0.0')
fagroup = models.ManyToManyField(FAgroup)
description = models.TextField(default=None, blank=True, null=True)
customer_facing = models.NullBooleanField(default=False, null=False)
monitored = models.NullBooleanField(default=False, null=True)
puppet = models.NullBooleanField(default=False, null=True)
sso = models.NullBooleanField(default=False, null=True)
def __str__(self):
return self.name
def display_fagroups(self):
return ', '.join([ group.name for group in self.fagroup.all() ])
class FAgroup(models.Model):
name = models.CharField(max_length=200)
def __str__(self):
return self.name
が、のどれもフィールドを保存します。エラーは発生せず、レコードが保存された旨のメッセージが表示されますが、変更内容は保持されません。