/ / Interrogazione per valore dell'oggetto correlato - python, django, modelli django, django-queryset

Interrogazione per valore dell'oggetto correlato - python, django, modelli django, django-queryset

Sto creando un semplice sistema di fatturazione, dove ho una tabella che elenca gli utenti e il giorno in cui dovrebbero essere fatturati. Ad ogni utente è associata solo una riga di questa tabella.

Ho bisogno di interrogare il database su base giornaliera per ottenere un elenco di utenti da fatturare in quel giorno.

Il modello è:

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

Come posso interrogare contro il campo del giorno? User.objects.filter(billingday=1) guarda l'ID, ma sto cercando di ottenere una lista di utenti con 1 come valore day in billingday

risposte:

4 per risposta № 1
User.objects.filter(billingday__day=1)

Come nota, però, potresti voler ripensarecome lo stai impostando prima di andare troppo in basso nella tana del coniglio. Gli utenti avranno più giorni di fatturazione? La mia ipotesi sarebbe no. Se questo è il caso, non c'è motivo per un BillingDay modello. Aggiunge solo dati di complessità e frammenti. Il giorno di fatturazione potrebbe essere solo un campo sul tuo profilo utente.

Ora, la creazione di un profilo utente per un utente non è in linea di principio diversa dall'avere un BillingDay modello come un modo per aggiungere ulteriori dati a User, ma è molto più estensibile. Django ha metodi incorporati per avere un profilo utente associato a tutti Usere puoi aggiungere più dati allo stesso oggetto del profilo utente nel tempo. Mentre, BillingDay verrebbero relegati a un solo punto di dati e successivamente sarà necessario aggiungere ulteriori modelli (maggiore complessità e frammentazione dei dati) per altri punti dati lungo la linea.

Vedere La documentazione di Django sui profili utente.