我正在检查字段的值是否说short_text1在assosiative模型中等于1然后我填充 LabelAdmin 字段列表以在管理界面上显示字段short_text1,但是这似乎不起作用 . 我使用get_object_or_404的原因是因为 Assosiative 模型中会有很多字段,我希望管理员只显示已在 Assosiative 模型上检查为true的 fields .
admin.py
from django.shortcuts import get_object_or_404
from django.contrib import admin
from .models import Master, Label, Assosiative, Contact, Project
from .forms import get_field_label
class LabelAdmin(admin.ModelAdmin):
#LabelAdminForm= get_field_label
#form = LabelAdminForm
l_asso = get_object_or_404(Assosiative, slug=slug)
fields_list = []
if l_asso.short_text1 == 1:
fields_list.append('short_text1')
if l_asso.short_text2 == 1:
fields_list.append('short_text2')
if l_asso.short_text3 == 1:
fields_list.append('short_text3')
if l_asso.short_text4 == 1:
fields_list.append('short_text4')
if l_asso.short_text5 == 1:
fields_list.append('short_text5')
fields = fields_list
prepopulated_fields = {'slug':['assosiative']}
class Meta:
model = Label
admin.site.register(Label, LabelAdmin)
models.py关联模型
class Assosiative(models.Model):
form_name = models.CharField(max_length=100, unique=True)
form_description = models.CharField(max_length=200)
slug = models.SlugField(unique=True)
instructions = models.TextField(max_length=500, blank=True, null=True)
heading1 = models.TextField(max_length=500, blank=True, null=True)
short_text1 = models.BooleanField(default=False)
short_text2 = models.BooleanField(default=False)
short_text3 = models.BooleanField(default=False)
short_text4 = models.BooleanField(default=False)
short_text5 = models.BooleanField(default=False)
models.py标签模型
class Label(models.Model):
assosiative = models.OneToOneField(Assosiative, unique=True)
slug = models.SlugField(unique=True)
short_text1 = models.CharField(max_length=150, blank=True, null=True)
short_text2 = models.CharField(max_length=150, blank=True, null=True)
short_text3 = models.CharField(max_length=150, blank=True, null=True)
short_text4 = models.CharField(max_length=150, blank=True, null=True)
short_text5 = models.CharField(max_length=150, blank=True, null=True)
1 回答
你应该使用
ModelAdmin
的get_fields方法 . 您不需要使用get_object_or_404
来获取关联,因为它已经与传递给get_fields
方法的当前对象链接 .