FieldError: Связанное поле получило недействительный поиск: содержит

Я пытаюсь реализовать простой поиск, при котором пользователь вводит любую строку в поисковый ввод и вся таблица проверяется на наличие строки.

Моя модель

class S_Owner_Master(models.Model):
    User= settings.AUTH_USER_MODEL
    flat_status = (('0', "Vacant"), ('1', "Occupied"))
    occupants = (('0', "Vacant"), ('1', "Owner"), ('2', "Tenant"))

    society = models.ForeignKey(S_Society_Master, related_name='society', null = True, on_delete=models.CASCADE)
    owner_id = models.AutoField(verbose_name = "Owner ID", primary_key=True, unique=True)
    owner_name = models.CharField(verbose_name = "Owner Name", max_length=100, blank=True, null=True)
    owner_email_id = models.EmailField(verbose_name = "Owner Email", max_length=100)
    owner_contact_number = models.CharField(verbose_name="Phone Number", max_length=15)    
    owner_flat_number = models.CharField(verbose_name="Flat No.", max_length=20)
    owner_flat_registration_date = models.DateField(verbose_name = "Owner Flat Regn. Date")
    owner_flat_transfer_date = models.DateField(verbose_name = "Owner Flat Transfer Date")
    flat_area_in_sqft = models.DecimalField(verbose_name="Flat Area", max_digits=10, decimal_places=2)
    flat_occupancy_status = models.CharField(verbose_name="Occupancy Status", max_length = 50, choices=flat_status)
    occupied_by = models.CharField(verbose_name="Occupied By", max_length = 50, choices=occupants)   
    deld_in_src_ind = models.CharField(max_length=20, choices=[("yes", "Yes"), ("no", "No")], default = "no", blank=True, null=True)
    created_date = models.DateField(verbose_name = "Created Date", auto_now_add = True)
    created_by = models.ForeignKey(User, related_name = "+", on_delete = models.SET_NULL, verbose_name="Created By", max_length=100, blank=True, null=True)
    updated_date = models.DateField(verbose_name = "Last Updated Date", auto_now_add = True, blank=True, null=True)
    updated_by = models.ForeignKey(User, related_name = "+", on_delete = models.SET_NULL, verbose_name="Updated By", max_length=100, blank=True, null=True)

views.py

def owner_simple_search(request):
    search_text = request.GET.get('search_field', None)
    if search_text is None or search_text=="":
        context ={'owners': S_Owner_Master.objects.all()}
    else:
        qs = S_Owner_Master.objects.filter(
            Q(owner_name__contains=search_text) |
            Q(owner_email_id__contains=search_text) |
            Q(owner_contact_number__contains=search_text) |
            Q(owner_flat_number__contains=search_text) |
            Q(flat_occupancy_status__contains=search_text) |
            Q(occupied_by__contains=search_text) |
            Q(deld_in_src_ind__contains=search_text) |
            Q(created_by__contains=search_text) |
            Q(updated_by__contains=search_text)
            )
        context = {
            'queryset': qs,
            'owners': S_Owner_Master.objects.all()
        }
    return render(request, "societyadmin/owners_list.html", context)

owners_list.html

<form method="GET" action="">
<input class="form-control py-2 border-right-0 border" type="search" name="search_field" placeholder="Type anything to search for an owner..." />
  <div class="row">
    <ul>
      {% for owner in queryset %}
        <li>
          {{ owner.owner_name }}
          <span>Email: {{ owner.owner_email_id }}</span>
          <span>Contact No.: {{ owner.owner_contact_number }}</span>
          <span>Flat No.: {{ owner.owner_flat_number }}</span>
          <span>Flat Registration Date: {{ owner.owner_flat_registration_date }}</span>
          <span>Flat Transfer Date: {{ owner.owner_flat_transfer_date }}</span>
          <span>Flat Area in sq.ft.: {{ owner.flat_area_in_sqft }}</span>
          <span>Flat Occupancy Status: {{ owner.flat_occupancy_status }}</span>
          <span>Flat Occupied By: {{ owner.occupied_by }}</span>
          <span>Created Date: {{ owner.created_date }}</span>
          <span>Created By: {{ owner.created_by }}</span>
          <span>Updated Date: {{ owner.updated_date }}</span>
          <span>Updated By: {{ owner.updated_by }}</span>
        </li>
        <hr />
      {% endfor %}
    </ul>
  </div>
</form>

Я получаю ошибку -> django.core.exceptions.FieldError: Related Field got invalid lookup: contains. Я пробовал с Q(owner_name__icontains=search_text), но все равно получаю ошибки.

Предполагая, что ваша модель 'User' содержит поле 'name' (должно быть строкой), попробуйте:

Q(created_by__name__contains=search_text) |
Q(updated_by__name__contains=search_text)
Вернуться на верх