/ / Consulta por valor de objeto relacionado - python, django, django-models, django-queryset

Consulta por valor de objeto relacionado - python, django, django-models, django-queryset

Estou configurando um sistema de faturamento simples, no qual tenho uma tabela que lista os usuários e o dia em que eles devem ser cobrados. Cada usuário tem apenas uma linha dessa tabela associada a eles.

Eu preciso consultar o banco de dados diariamente para obter uma lista de usuários a serem cobrados nesse dia.

O modelo é:

class BillingDay(models.Model):
user = models.ForeignKey(User)
day = models.IntegerField(max_length=2)

Como eu poderia consultar o campo do dia? User.objects.filter(billingday=1) olha para o ID, mas eu estou olhando eu preciso para obter uma lista de usuários com 1 como o valor para day dentro billingday

Respostas:

4 para resposta № 1
User.objects.filter(billingday__day=1)

Apenas como uma nota, no entanto, você pode querer repensarcomo você está configurando isso antes de você ir muito longe na toca do coelho. Os usuários terão vários dias de faturamento? Meu palpite seria não. Se esse for o caso, não há razão para um BillingDay modelo. Apenas adiciona complexidade e fragmentos de dados. O dia de faturamento poderia ser apenas um campo no seu perfil de usuário.

Agora, criar um perfil de usuário para um usuário não é, em princípio, diferente do fato de ter um BillingDay modelo como uma maneira de adicionar dados extras para User, mas é muito mais extensível. O Django possui métodos embutidos para ter um perfil de usuário associado a cada User, e você pode mais dados para o mesmo objeto de perfil de usuário ao longo do tempo. Enquanto que, BillingDay seria relegado a apenas um ponto de dados e você teria que adicionar modelos adicionais (mais complexidade e fragmentação de dados) para outros pontos de dados no final da linha.

Vejo Documentação do Django sobre perfis de usuários.