Comment puis-je obtenir la liste de tous les éléments avec une requête reçue?
Malais Parmar
Je crée un projet Django dans lequel j'ai une liste d'utilisateurs qui contient divers éléments. Chaque article a son attribut comme le nom, la quantité et la date.
Voici mon modèle d'articles:
class Item(models.Model):
STATUS = (
('BOUGHT', 'BOUGHT'),
('NOT AVAILABLE', 'NOT AVAILABLE'),
('PENDING', 'PENDING'),
)
userlist = models.ForeignKey(userList, on_delete=models.SET_NULL, blank=True, null=True)
item_name = models.CharField(max_length=200, null=True)
item_quantity = models.CharField(max_length=200, null=True)
item_status = models.CharField(max_length=200, null=True, choices=STATUS)
date = models.DateField(null=True)
def __str__(self):
return self.item_name
Voici mon views.py:
def listView(request):
if request.user.is_authenticated:
fd = None
user_id = request.user.id
userlist, created = userList.objects.get_or_create(user_id=user_id)
items = userlist.item_set.all()
if request.body:
data = json.loads(request.body)
fd=data['date']
else:
items = None
context = {'items': items}
return render(request, 'list_manager/index.html', context)
Ici, fd est la requête «date» reçue du corps. Par défaut, les éléments contiennent tous les éléments présents dans la liste. Maintenant, je veux juste la liste des objets qui ont item.date == fd, comment puis-je y parvenir?
Vishal Singh
Vous pouvez utiliser request.POST
[Django-Docs] au lieu d'utiliser le module json pour charger le corps de la requête. Si ce request.POST.get("date")
n'est pas un objet datetime mais une chaîne, vous devez l'analyser en objet datetime en utilisant datetime.strptime()
.
def listView(request):
if request.user.is_authenticated:
fd = None
user_id = request.user.id
userlist, created = userList.objects.get_or_create(user_id=user_id)
items = userlist.item_set.filter(date=request.POST.get("date"))
else:
items = None
context = {"items": items}
return render(request, "list_manager/index.html", context)