0

模型.py

class ReportType(models.Model):
    report = models.ForeignKey(Report)
    title = models.CharField('Incident Type', max_length=200)

class Report(models.Model):
    user = models.ForeignKey(User, null=False)
    app_uuid = models.CharField('Unique App Id', max_length=100)

class Types(models.Model):
    user = models.ForeignKey(User, null=True)
    title = models.CharField('Incident Type', max_length=200)
    is_active = models.BooleanField('Is Active', default=True)

在类型表中,我在标题字段中保存了一些默认数据。用户输入的数据保存在 ReportType 表中。

我想比较Types模型和ReportType模型中title字段的数据。比较后,如果Types模型中不存在ReportType模型中的title字段数据,我需要在模板中显示。我需要显示存在的不匹配值在 ReportType 模型中。

模板.html

{% for type in report_type %} 
 {{type.title}}{% endfor %}

我试过这个查询

 report_type = Report.objects.filter(reporttype__title=F('types__title')) 

我收到此错误"Cannot resolve keyword 'types' into field",这是因为类型表与报表表没有关系。需要帮助。

4

2 回答 2

0

看来您至少需要 2 个查询:

# get all types as a list
all_types = Types.objects.values_list('title', flat=True)

# you need to show the mismatch, then use exclude()
report_type = ReportType.objects.exclude(title__in=all_types)

希望能帮助到你。

于 2013-08-06T10:26:44.877 回答
0

您可以过滤 ReportType 对象并从结果查询集中获取报告,如下所示:

ReportType.objects.values_list('report').filter(title__in=Types.objects.values_list('title', flat=True).distinct())
于 2013-08-06T10:56:07.857 回答