我正在django-admin中对我的查询集实施过滤器,以避免出现错误消息“已经存在”
该表是主映射表,其中从不同来源映射ID。
ID只能映射一次,因此大多数字段都是OneToOne。
我已经这样建立了映射模型
class Dim_Fund_Manager_Mapping(Trackable):
fund_manager_id = models.AutoField(primary_key=True)
sharepoint_fund_manager = models.OneToOneField(sharepoint_fund_manager, models.DO_NOTHING)
evestment_fund_manager = models.OneToOneField(evestment_fund_manager, models.DO_NOTHING)
approved = models.BooleanField(default=False)
class Meta:
unique_together = (('sharepoint_fund_manager', 'evestment_fund_manager'),)
verbose_name_plural = 'Fund Manager Mapping Master'
在管理员中创建地图时,我希望这些sharepoint_fund_manager和evestment_fund_manager不再出现在查询集中。
@admin.register(Dim_Fund_Manager_Mapping)
class ChampFundManagerAdmin(admin.ModelAdmin):
def get_queryset(self, request):
return qs = super().get_queryset(request).select_related(
'sharepoint_fund_manager',
'evestment_fund_manager',
)
据我所知,这是迄今为止的事情。
请问有人有什么代码/帮助吗
仅当在admin中使用表单时,我可能不会过滤掉查询集。
def get_form(self, request, obj=None, **kwargs):
form = super(ChampFundManagerAdmin, self).get_form(request, obj, **kwargs)
form.base_fields['sharepoint_fund_manager'].label_from_instance = lambda obj: "{} {}".format(obj.final_publications_fund_manager_id, obj.manager_name)
form.base_fields['evestment_fund_manager'].label_from_instance = lambda obj: "{} {}".format(obj.evestment_fund_manager_id_bk, obj.manager_name)
return form
更新
我对添加的get_form方法进行了一些更改
form.base_fields['sharepoint_fund_manager'].queryset = sharepoint_fund_manager.objects.filter(sharepoint_fund_manager_id__isnull=True)
现在什么也没返回,所以我越来越近了,更改为true无效
答案 0 :(得分:0)
将其分类
过滤正确的对象时,我没有过滤正确的键
form.base_fields['sharepoint_fund_manager'].queryset = sharepoint_fund_manager.objects.filter(dim_fund_manager_mapping__isnull=True)