Могу ли я определить псевдоним для иностранного поля в Джанго?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Могу ли я определить псевдоним для иностранного поля в Джанго?

Сообщение Anonymous »

Я хочу определить псевдоним для набора, связанного с иностранным ключом, чтобы затем его можно было использовать в общей функции фильтрации. Чтобы объяснить, более подробно, вот упрощенный пример моего варианта использования, демонстрируя, чего я пытаюсь достичь:
models.py
from django.db import models

class Family(models.Model):
family_name = models.CharField(max_length=100)

pets: models.Manager['Pet'] = ...
members: models.Manager['Person'] = ...

def __str__(self):
return f'{self.id} - {self.family_name}'

class Pet(models.Model):
class PetType(models.TextChoices):
CAT = 'cat'
DOG = 'dog'
LIZARD = 'lizard'

name = models.CharField(max_length=100)
type = models.CharField(max_length=100, choices=PetType)
family = models.ForeignKey(Family, on_delete=models.CASCADE, related_name='pets')

def __str__(self):
return f'{self.id} - {self.name} {self.family.family_name} [{self.type}]'

class Person(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
family = models.ForeignKey(Family, on_delete=models.CASCADE, related_name='members')

@property
def pets(self) -> models.Manager[Pet]:
return self.family.pets

def __str__(self):
return f'{self.id} - {self.name} {self.family.family_name}'

Если у меня есть объект человека , я могу использовать его свойство Pets , чтобы получить домашних животных из семьи, я ищу способ для Добавьте псевдоним/аннотацию/что угодно в запрос человека , чтобы я мог определить:
def has_a_cat(query_set):
return query_set.filter(pets__type='cat')

, а затем иметь возможность использовать это для семейства и person наборов запросов. Я знаю, что могу отфильтровать человека queryset по типу домашнего животного, потому что человек. Objects.filter (family__pets__Type = 'cat') работает совершенно нормально, но я бы хотел, чтобы путь к псевдониме __pets до домашних животных , чтобы я мог использовать общий фильтр. (pets = f ('family__pets)) , но затем при фильтрации на Pets__Type я получаю следующую ошибку:
django.core.exceptions.FieldError: Unsupported lookup 'type' for BigAutoField or join on the field not permitted.


Подробнее здесь: https://stackoverflow.com/questions/793 ... -in-django
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Могу ли я определить псевдоним для иностранного поля в Джанго?
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Изменил отношения иностранного ключа | Джанго модель
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Проблема возникает при добавлении нового поля иностранного ключа в модель
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Проблема возникает при добавлении нового поля иностранного ключа в модель
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Джанго не распознает URL-адреса администратора Джанго
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»