Я хочу реализовать фильтр для моего набора запросов в django-admin, чтобы избежать появления сообщения об ошибке «уже существует»
Таблица представляет собой таблицу основного сопоставления, в которой идентификаторы сопоставляются из разных источников.
Идентификаторы могут быть сопоставлены только один раз, таким образом, большинство полей являются 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',
)
Насколько я знаю, насколько я знаю.
У кого-нибудь есть код / помощь, пожалуйста
Я, вероятно, не хочу отфильтровывать набор запросов при отображении его только при использовании формы в админке
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 не имеет никакого эффекта