2016-07-15 55 views
0

我不知道为什么,但django-admin,raw_id_fields正在给我返回一个相关的字段错误。我会解释我所做的以及我尝试过的不同结果。raw_id_fields引发错误相关字段得到无效的查找:icontains

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

  • 系统:孤儿
  • 理念:孤儿
  • 提取物:与系统相关,1种提取物是1个系统的儿童,1个系统许多提取物
  • 映射:与系统相关的两次:映射是两个系统之间的关系,一个是源,另一个是目的地
  • MappingDestinationExtractConcept:在mappi中ng,对于给定的概念,目标系统的特定提取将被“映射”。

我没有问题在所有模型中使用raw id,但在使用管理搜索引擎时返回臭名昭着的icontains错误的模型中。

# 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的目的地提取

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

admin.site.register(MappingTargetTableConcept, MappingTargetTableConceptManager) 

管理员显示搜索放大镜,并弹出显示来电原始ID,但当在弹出的提取物,我想(或任何)它带来的。在控制台这部作品Extract.objects.filter(extract_name__icontains='Contract')

我试图取代raw_id为`raw_id_fields =(“destination_extract__extract_name”)..没有成功

回答

0

我可以修复它..这个问题(或者至少它的方式得到固定是为搜索字段中提取的相关的ModelAdmin)

我:

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

当我变成这样:

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

It works ..