2010-03-17 3 views
0

Je modèles ...Je veux sélectionner la valeur distincte du champ des modèles, puis les mettre à jour (django)

class Item(models.Model): 
    name = models.CharField('Item Name', max_length = 30) 
    item_code = models.CharField(max_length = 10) 
    color = models.CharField(max_length = 150, null = True, blank = True) 
    size = models.CharField(max_length = 30, null = True, blank = True) 
    fabric_code = models.CharField(max_length = 30, null = True, blank = True)  

J'ai des valeurs au point. Dans le champ Nom du modèle d'article, les valeurs sont similaires (mais les autres valeurs d'enregistrement sont modifiées). Je veux sélectionner les valeurs du champ de nom distinctement (c.-à-d. Les valeurs similaires n'en sélectionnent qu'une) dans une seule case (comme la liste déroulante).

Quel type de formulaire ou de vues puis-je utiliser?

Répondre

0

Je ne comprends pas vraiment votre question. Voulez-vous choisir des valeurs distinctes pour le nom, comme dans

Item.objects.values('name').distinct() 
+0

oui, je veux cela similaire. mais comment puis-je l'utiliser avec forme? comme item = forms.ModelChoiceField (label = 'Sélectionner un élément', queryset = Item.objects.values ​​('nom'). Distinct()) cela ne fonctionne pas. ) – qulzam

0

si vous souhaitez modifier un des éléments de choix du widget, utilisez quelque chose comme ceci:

choices_list = Item.objects.values_list('name','name').distinct() 
form_item = forms.ModelChoiceField(label = 'Select Item', choices = choices_list) 

Comme dit dans le django field docs:

choix: Un itérable (par exemple, une liste ou un tuple) de 2-tuples à utiliser comme choix pour ce champ.

+0

Je l'utilise mais je veux aussi ajouter le premier champ vide? le code ci-dessus n'ajoute pas de valeur vide – qulzam

+0

choices_list = list (Item.objects.values_list ('nom', 'nom'). distinct()) choices_list.insert (0, ('', '------ ')) – jujule

Questions connexes