6
votes

Django champ unique

Y a-t-il une autre manière Regex (ou d'une autre manière) pour s'assurer qu'un champ de classe modèle serait unique? (Ce n'est pas une clé, ni du moins non déclaré comme une clé, est Shoulb Soyez un simple charfield)

merci


0 commentaires

3 Réponses :


15
votes

La manière habituelle de faire un seul champ unique est d'utiliser le Unique Argument au constructeur de terrain.


2 commentaires

Mais pourquoi ne fonctionne pas quand j'ajouterais unique = true dans user_id = modèles.charfield (max_length = 20, unique = true) ?


Ce fil semble suggérer que l'unique ne peut être effectuée que lorsqu'une table est créée: Stackoverflow.com/questions/17627556/... Je n'ai pas personnellement testé pour voir si c'est vrai.



2
votes

Si vous avez besoin de rendre cela unique sur plusieurs champs, regardez: Unique-ensemble


0 commentaires

0
votes

Il y a deux façons de le faire. Le premier consiste à marquer la colonne entière comme unique code>. Par example: Product_Name = Modèles.Charfield (max_length = 10, unique = true) code>

Cette méthode est bonne lorsque vous souhaitez que toute votre colonne soit intrinsèquement unique, quelle que soit la situation. Ceci peut être utilisé pour nom d'utilisateur code>, id code>, clé code> etc. P>

Cependant, si la colonne ne peut pas être intrinsèquement unique mais Il doit être unique par rapport aux autres, vous devez utiliser la manière manuelle. P>

from django.core.exceptions import ObjectDoesNotExist

try:
    n = WishList.objects.get(user=sample_user, product=sample_product)
    # already exists
    return False
except ObjectDoesNotExist:
    # does not exist
    wish_list = WishList(user=sample_user, product=sample_product)
    wish_list.save()
    return True


0 commentaires