es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Filtrar los datos de un usuario utilizando “contains” en Django.

Tengo este modelo que registra datos en formato slug. El usuario tiene una relación con el modelo de premios. Lo que intento hacer es listar los datos del campo slug de todos los premios del usuario que ha iniciado sesión en el filtro de contención para poder usarlo para filtrar los datos del usuario.

NOTA: Todos los datos almacenados en el campo de modelo SuccessfulTransactionHistory del premio están en formato slug y el modelo SuccessfulTransactionHistory no tiene relación de clave externa con el premio y el usuario.

models.py

class Award(models.Model):
    admin = models.ForeignKey(settings.AUTHUSERMODEL, ondelete=models.CASCADE)
    name = models.CharField(max_length=100)
    image = models.ImageField(upload_to='awardimages')
    slug = models.SlugField(max_length=150, blank=True, null=True)
    abouttheaward = models.TextField(blank=True, null=True)
    status = models.CharField(max_length=20, choices=STATUSPUBLISHED, default='Closed')
    price = models.DecimalField(max_digits=3, default='0.5',  decimal_places=1, blank=True, null=True, validators=[MinValueValidator(0.1)])
    bulkvoting = models.CharField(max_length=20, choices=BULKVOTING, default='Closed')
    amount = models.DecimalField(default=0.0, max_digits=19, decimal_places=2, blank=True,)
    resultsstatus = models.CharField(max_length=20, choices=RESULTSPUBLISHED, default='private')
    startingdate = models.DateTimeField()
    endingdate = models.DateTimeField()
    date = models.DateTimeField(auto_now_add=True)

class SuccessfulTransactionHistory(models.Model):
    nomineename = models.CharField(max_length=120)
    transactionid = models.CharField(max_length=120)
    award = models.CharField(max_length=120)
    amount = models.DecimalField(default=0.0, max_digits=19, decimal_places=2)
    status = models.CharField(max_length=120, null=True, blank=True)
    phone = models.CharField(max_length=120, null=True, blank=True)
    date = models.DateTimeField(auto_now_add=True)

En mi archivo view.py

successlist = SuccessfulTransactionHistory.objects.filter(award__contains=request.user.award.slug).order_by('-date')

Este es mi error

El objeto 'User' no tiene el atributo 'award'.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Dado que el modelo SuccessfulTransactionHistory no tiene relación de clave externa con Award y User, no puede utilizar request.user.award.slug en el filtro.

    Puede utilizar el modelo Award para obtener el slug del Award asociado al User y luego utilizarlo en el filtro.


    award_slug = Award.objects.get(admin=request.user).slug
    success_list = SuccessfulTransactionHistory.objects.filter(award__contains=award_slug).order_by('-date')

Comments are closed.