Django admin :: 我想在添加另一项时保留上次选择的值

13 浏览
0 Comments

Django admin :: 我想在添加另一项时保留上次选择的值

背景:

1. 在django管理网站中

2. 我通过添加按钮在模型中添加一个新项目

3. 当表单显示时,我有一个下拉菜单,其中有一些选项可供选择,我选择了选项B,并填写其他字段以完成表单

4. 我点击保存并添加另一个按钮

当显示新的“添加表单视图”时,

我希望我的下拉菜单保持在我之前选择的最后一个选项(B选项)上

您有什么简单的建议来实现这一点?

谢谢

0
0 Comments

Django admin :: I want to keep last selected value on adding another item问题的出现原因是希望在添加新项目时保留上次选择的值。为了解决这个问题,可以按照以下步骤进行操作:

1. 在模型中创建author(外键auth.User)和created(自动添加当前时间)字段。

2. 在模型管理类中重写get_form函数,在其中获取当前用户创建的最后一个对象,并将所需的初始值放入外键字段。

以下是示例代码(未经测试,仅供参考):

# yourapp/models.py
from django.db import models
class ModelOne(models.Model):
    pass
class ModelTwo(models.Model):
    model_one = models.ForeignKey(ModelOne)
    created = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey('auth.User')
# yourapp/admin.py
from django.contrib import admin
from yourapp.models import ModelTwo
admin.site.register(ModelTwo)
class ModelTwoAdmin(admin.ModelAdmin):
    def get_form(self, request, obj=None, **kwargs):
        form = super(ModelTwoAdmin, self).get_form(request, obj, **kwargs)
        if '_addanother' in request.POST:
            latest_object = ModelTwo.objects.filter(author=request.user).latest('created')
            form.base_fields['model_one'].initial = latest_object.model_one
        return form

以上是解决问题的方法,通过在get_form函数中获取当前用户创建的最后一个对象,并将其值作为初始值放入外键字段中,从而实现保留上次选择的值的功能。

0
0 Comments

在Django admin中,当用户添加另一项时,希望保留最后选择的值。下面是一个解决该问题的代码示例:

# app/admin.py
def get_changeform_initial_data(self, request):
    latest_object = ModelTwo.objects.filter(author=request.user).latest('created')
    return {'model_one': latest_object.model_one_id}

这段代码的作用是在添加另一项时,通过过滤当前用户的ModelTwo对象并按创建时间降序排序,获取最新的对象。然后,将最新对象的model_one_id作为初始数据返回,以保留上次选择的值。

这段代码需要在app的admin.py文件中添加。通过在admin.py文件中重写get_changeform_initial_data方法,并将其返回的初始数据传递给model_one字段,就可以实现保留上次选择的值的功能。

0