filtre plusieurs objets et de nouveaux champs "retours dans sérialiseur
Tout comme Youtube, je veux voir quelles catégories mon post (tenue) est en.
Mon approche est ...
- obtenir la liste entière des catégories appartiennent à l'utilisateur
- obtenir la liste entière des catégories appartiennent à l'utilisateur et le poste
- les comparer et retour JSON
En construisant un Seriailizer, j'ai l'impression d'être totalement en stock. Alors frustraing ... :(
S'il vous plaît ne hésitez pas à changer mon approche si vous avez une meilleure idée.
outputis JSON qu'on se attend
{
...
"categories": [
{
"id": 1,
"name": "asd"
"added": True <- since the post is added to 'asd'
},
{
"id": 2,
"name": "workout"
"added": True
},
...
{
"id": 5,
"name": "bgm"
"added": False <- since the post is not added to 'bgm'
},
]
}
Voici views.py
class OutfitDetailView(generics.RetrieveAPIView):
queryset = Outfit.objects.all()
serializer_class = OutfitDetailSerializer
lookup_field = 'pk'
Voici serializers.py (ceci est un problème)
class OutfitDetailSerializer(serializers.ModelSerializer):
...
def get_categories(self, obj):
# Right Here! Get whole categories associated with user
all_categories = Category.objects.filter(owner=self.context['request'].user)
# And the categories associated with user AND the post
categories = obj.categories.filter(owner=self.context['request'].user)
return CategorySerializer(categories, many=True).data
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = (
'id',
'name',
'added' <- here I want to add 'added' field but I don't know how.
)
Si vous avez besoin d'un modèle
class Outfit(models.Model):
...
user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)
content = models.CharField(max_length=30)
...
class Category(models.Model):
name = models.CharField(max_length=20)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)
outfits = models.ManyToManyField(Outfit, related_name="categories", blank=True)
main_img = models.ImageField(
upload_to=upload_location_category,
null=True,
blank=True)
...
ajouté toujours 'True'? –
Je viens d'ajouter plus de descriptions sur la partie JSON. @BearBrown Merci d'avoir signalé –
@BearBrown Faites-moi savoir si quelque chose n'est pas clair –