【发布时间】: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