0

models.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) 

В таблице Типы, я спасаю некоторые данные по умолчанию в данных заголовка field.The введенные пользователем, сохраняются в ReportType таблице.

Я хочу сравнить данные в поле заголовка в модели типов и модели ReportType. После сравнения, если данные поля заголовка в модели ReportType отсутствуют в модели типов, мне нужно отобразить это в шаблоне. Мне нужно показать несоответствующее значение, присутствующее в модели ReportType.

template.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", это потому, что таблица типов не имеют отношения с Report table.Need помощи.

+0

Для меня это выглядит, как вы должны переосмыслить свои модели. Вероятно, 'Report' должен иметь FK для' ReportType', а не наоборот. Пожалуйста, добавьте дополнительную информацию о том, чего вы пытаетесь достичь. –

+0

@ dan-klasson, я пытаюсь достичь несогласованного элемента из таблицы Types.Types имеют некоторые значения значений по умолчанию, между тем данные, введенные пользователем, сохраняются в таблице ReportType, я хочу проверить, не введен ли введенные данные пользователем в таблице типов, если не их, мне нужно отобразить этот несоответствующий элемент в шаблоне. –

ответ

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) 

Надеется, что это помогает.

+0

Как сравнить два поля заголовка модели, если их несоответствие в двух данных полей заголовка необходимо показать в шаблоне. Как запросить данные двух таблиц и сравнить их. –

+0

Проверьте мой отредактированный ответ, тогда вам нужно использовать 'exclude()' вместо 'filter()', так как вы хотите получить список несоответствий только –

+0

Я запутался, я использовал исключение в объекте Report.I хочу выбрать заголовок из модели ReportType и типа и сравнить их. Если их несоответствие должно показать несоответствие. Я напечатал отчет_type в консоли, он напечатал объект Report.If, это их несоответствие в обоих заголовках модели, оно не отображается в шаблоне. Я обновил свой шаблон. –

0

Вы можете фильтровать объекты ReportType и получить отчеты из результатов QuerySet так:

ReportType.objects.values_list('report').filter(title__in=Types.objects.values_list('title', flat=True).distinct()) 
Смежные вопросы