Django ModelAdmin:更新字段而不保存

时间:2016-08-05 14:36:57

标签: python django modeladmin

我有一个如下所示的管理页面:

class NameAdmin(admin.ModelAdmin):
  list_display = ['long_name', 'short_name']
  search_fields = ['long_name','short_name']

在我的管理页面中,我创建了一个按钮(它被称为" getname"),按下后,应该更新short_name字段(如果它是空的,否则保留它)。但是,插入的文本不应该保存到数据库中,只显示。

如果用户同意该文本,那么只有他按下" Save"然后它应该保存到数据库中。

save_model方法当然不起作用,因为它将它保存到数据库中。

def save_model(self, request, obj, form, change):
  if 'getshortname' in request.POST:
    if not obj.short_name:
       obj.short_name = model_support.parse_shortname(obj.long_name)

有什么想法吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

我会在forms.py中创建一个表单:

from django import forms
from myapp.models import MyModel

class MyModelForm(forms.ModelForm):
    update_me = forms.CharField(max_length=100, required=False)

    class Meta(Object):
        model = MyModel

然后在admin.py中:

from django.contrib import admin
from myapp.forms import MyModelForm


class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm


admin.site.register(MyModel, MyModelAdmin)

这样,您在模型中有一个不会保存到数据库的字段,不是必需的,您可以更新它并使用save_model方法将值传递给您的相关字段模型,以便保存到数据库。