-1

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

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

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

如果用户同意该文本,那么他才应该按“保存”,然后将其保存到数据库中。

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)

有任何想法吗?

非常感谢

4

1 回答 1

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方法将值传递给模型的相关字段,以便保存到数据库。

于 2016-08-05T16:05:42.857 回答