【问题标题】:raw_id_fields raising error Related Field got invalid lookup: icontainsraw_id_fields 引发错误相关字段查找无效:​​icontains
【发布时间】:2016-07-15 14:29:35
【问题描述】:

我不知道为什么,但是 django-admin, raw_id_fields 向我返回了一个相关的字段错误。我将解释我所做的以及我尝试的不同方法但没有结果。

对于这种特殊情况,我有 5 种不同的模型:

  • 系统:孤儿
  • 概念:孤儿
  • 数据提取:与系统相关,1 个数据提取是 1 个系统的子系统,1 个系统有多个数据提取
  • 映射:与系统相关两次:映射是两个系统之间的关系,一个是起点,另一个是终点
  • MappingDestinationExtractConcept:在映射中,将针对给定概念“映射”目标系统的特定提取。

我在所有模型中使用原始 id 都没有问题,但在 Mapping DestinationExtractConcept 模型中使用管理搜索引擎时返回臭名昭著的图标包含错误。

# Models.py
class System(models.Model):
    system_name = models.CharField(max_length=20, null=False, verbose_name='System')
    version = models.CharField(max_length=20, blank=True, verbose_name='Version')

    class Meta:
        unique_together = (('system_name', 'version'),)


class Extract(models.Model):
    extract_name = models.CharField(max_length=20, null=False, verbose_name='Extract Name')
    system = models.ForeignKey(System, related_name='extracts', on_delete=models.CASCADE, verbose_name='System')

    def __str__(self):
        return 'Mapping of {} into {}'.format(self.mapping_system, self.destination_system)

    class Meta:
        unique_together = (('extract_name', 'system'),)


class Mapping(models.Model):
    destination_system = models.ForeignKey(System, on_delete=models.CASCADE, related_name='mappings',
                                           verbose_name='Destination System')
    mapping_system = models.ForeignKey(System, on_delete=models.CASCADE, related_name='maps_into',
                                       verbose_name='Input System')
    mapping_description = models.TextField(blank=True, null=True)

    class Meta:
    unique_together = (('mapping', 'destination_extract', 'mapping_concept'),)


class MappingTargetTableConceptSources(models.Model):
    mapping_target_table_concept = models.ForeignKey(MappingTargetTableConcept, on_delete=models.CASCADE,
                                                 related_name='is_used', verbose_name='Mapping Concept')
    destination = models.ForeignKey(Extract, on_delete=models.CASCADE, verbose_name='Source Table')

    class Meta:
        unique_together = (('mapping_target_table_concept', 'source', ),)

admin.py 中,我只想调用MappingTargetTableConcept 的目标提取中的原始ID

# admin.py
class MappingTargetTableConceptManager(admin.ModelAdmin):
    raw_id_fields = ('destination_extract',)

admin.site.register(MappingTargetTableConcept, MappingTargetTableConceptManager)

管理员显示用于搜索的放大镜和弹出窗口,但是当在弹出窗口中查找我想要的提取物(或任何东西)时,它会带来。在控制台中这工作Extract.objects.filter(extract_name__icontains='Contract')

我尝试将 raw_id 替换为 `raw_id_fields=('destination_extract__extract_name',).. 没有成功

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    我能够修复它.. 问题(或者至少修复的方式是提取的相关模型管理员中的搜索字段)

    我有:

    class ExtractManager2(admin.ModelAdmin):         
         search_fields = ('system', 'extract_name', 'tech_name', 'description', )
    

    当我把它改成:

    class ExtractManager2(admin.ModelAdmin):         
         search_fields = ('extract_name',)
    

    它有效..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      相关资源
      最近更新 更多