Aficher un autre champs que L'id dans une relation MAny to Many

Bonjour, je suis un nouveau dans la communauté et j’apprécie vraiment python.
Depuis quelque jour je suis bloqué pour faire afficher les nom d’un produit dans un formulaire.
voici la situation j’ai deux Models : Commande et Produit qui sont liés par une relation many to many.
je souhaite qu’en ajoutant une commande, tous les produit me soient proposés dans un champs de choix multiples. J’arrive à le faire sauf que les produit se présent sous forme : produit Object (1), produit object (2)… dans mon template. voici le code:

table ou model des produits:

“”"
from turtle import mode

from django.db import models

Create your models here.

class Produit(models.Model):

designation=models.CharField(max_length=50)

create_time=models.DateTimeField(auto_now_add=True)

‘’’
Table ou Model des commande:
‘’‘’
from turtle import mode

from django.db import models

from Produit.models import Produit

Create your models here.

class Commande(models.Model):

m_designation=models.CharField(max_length=50)

Produit=models.ManyToManyField(Produit)

create_time=models.DateTimeField(auto_now_add=True)

‘’‘’

le le formulaire

‘’‘’
from django.forms import ModelForm

from .models import Commande

class CommandeForm(ModelForm):

class Meta:

    model=Commande

    fields='__all__'

‘’‘’

Le template:

‘’‘’
{% extends ‘main.html’ %}

{% load crispy_forms_filters %}

{% block content %}

<h1> <u> Ajouter Commande</u>:</h1>

<div>

    <div class="card card-body col-sm-6 ">

        <form action="" method="POST">

    {% csrf_token %}

   {{ form|crispy}}

    <button type="submit" class="btn btn-primary sm6" name="Enregistrer">Enregister</button>

        </form>

    </div>

{% endblock content %}

Toutes mes excuses, je ne parle pas français. Je dois compter sur translate.google.com. J’espère qu’il fera du bon travail avec ça.

Si la traduction est exacte, vous avez au moins deux options pour cela.

  • Vous pouvez remplacer la méthode __str__ de votre classe Product pour créer la représentation souhaitée.

  • Vous pouvez créer une classe de champ personnalisée pour le champ de votre formulaire afin de créer une représentation personnalisée.

L’utilisation de la première méthode va appliquer partout que vous sélectionnez sur ce champ. La deuxième méthode vous permettrait de personnaliser des formulaires individuels si vous vouliez que la représentation change en fonction du formulaire en cours de construction.

Voir les documentation sur Champs de formulaires | Documentation de Django | Django


And the original English in which this reply was written:

My apologies, I do not speak French. I must rely upon translate.google.com. I hope it does a good job with this.

If the translation is accurate, you have at least two options for this.

  • You can override the __str__ method of your Product class to create the desired representation.

  • You can create a custom field class for the field in your form to create a custom representation.

Using the first method is going to apply everywhere you are selecting on that field. The second method would let you customize individual forms if you wanted the representation to change depending upon which form is being built.

See the documentation at Champs de formulaires | Documentation de Django | Django

merci beaucoup résolu