class Model1(models.Model):
name = models.CharField(...)
...
class Model2(models.Model)
model = models.OneToOneField(Model1)
...
我转到管理面板。页面添加一个条目到Model2,观察列表模型。还有Model1的所有记录。 是否可以自定义管理区域,以便列表不会获得已经存在关系的记录。
谢谢
答案 0 :(得分:2)
您应该覆盖表单类的 _ init _ 方法。 您可以从下面的代码中获取帮助。
from django import forms from .models import Model2, Model1 class Model2Form(forms.ModelForm): model1 = forms.ModelChoiceField(queryset=[],) class Meta: model = Model1 def __init__(self, *args, **kwargs): """ initialize form data """ super(Model2Form, self).__init__(*args, **kwargs) model2_obj = Model2.objects.all().values_list('model1') model2_list = [data[0] for data in model2_obj] self.fields['model1'].queryset = Model1.objects.exclude(id__in=model2_list)
在admin.py中。
from django.contrib import admin from .forms import Model2Form from .models import Model2 class Model2Admin(admin.ModelAdmin): form = Model2Form fields = ['model1'] admin.site.register(Model2, Model2Admin)