1
class Model1(models.Model):
  name = models.CharField(...)
  ...
class Model2(models.Model)
  model = models.OneToOneField(Model1)
  ...

我去管理面板。页面添加一个条目到 Model2,观察列表模型。还有来自 Model1 的所有记录。是否可以自定义管理区域,以便列表没有获取已经有关系的记录。

谢谢你

4

1 回答 1

2

你应该重写表单类的_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)
于 2013-10-24T04:46:14.930 回答