在Django管理面板中,如果想要在一个模型的下拉列表中预先填充另一个模型的CharField值,可以通过以下步骤实现:
以下是一个示例代码:
from django.contrib import admin
from .models import Model1, Model2
class Model2Admin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
form = super().get_form(request, obj, **kwargs)
if obj:
# 获取Model1的CharField值
char_value = obj.model1.charfield
# 设置Model2的CharField初始值
form.base_fields['charfield'].initial = char_value
return form
admin.site.register(Model2, Model2Admin)
在上述示例中,我们创建了一个自定义的ModelAdmin类Model2Admin,并重写了get_form方法。在该方法中,我们通过obj参数获取了当前Model2对象的关联Model1对象,并从Model1对象中获取CharField的值。然后,我们使用initial属性将该值设置为Model2表单中CharField的初始值。
请注意,上述示例中的Model1和Model2分别代表两个相关的模型,你需要根据实际情况进行替换。
这样,当在Django管理面板中创建或编辑Model2对象时,CharField字段的下拉列表将会预先填充Model1对象的CharField值。
领取专属 10元无门槛券
手把手带您无忧上云