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)