class Model1(models.Model):
name = models.CharField(...)
...
class Model2(models.Model)
model = models.OneToOneField(Model1)
...
我去管理面板。页面添加一个条目到 Model2,观察列表模型。还有来自 Model1 的所有记录。是否可以自定义管理区域,以便列表没有获取已经有关系的记录。
谢谢你
class Model1(models.Model):
name = models.CharField(...)
...
class Model2(models.Model)
model = models.OneToOneField(Model1)
...
我去管理面板。页面添加一个条目到 Model2,观察列表模型。还有来自 Model1 的所有记录。是否可以自定义管理区域,以便列表没有获取已经有关系的记录。
谢谢你
你应该重写表单类的_init_方法。您可以从下面给定的代码中获得帮助。
从 django 导入表格
从 .models 导入模型 2、模型 1
类 Model2Form(forms.ModelForm):
model1 = forms.ModelChoiceField(queryset=[],)
元类:
型号 = 型号 1
def __init__(self, *args, **kwargs):
""" 初始化表单数据 """
super(Model2Form, self).__init__(*args, **kwargs)
model2_obj = Model2.objects.all().values_list('model1')
model2_list = [data[0] 用于 model2_obj 中的数据]
self.fields['model1'].queryset = Model1.objects.exclude(id__in=model2_list)
在 admin.py 中。
从 django.contrib 导入管理员
从 .forms 导入 Model2Form
从 .models 导入 Model2
类 Model2Admin(admin.ModelAdmin):
形式 = Model2Form
字段 = ['model1']
admin.site.register(Model2, Model2Admin)