Y a-t-il un moyen d'autocrament un champ en ce qui concerne la précédente ... E.g Si l'enregistrement précédent a la valeur 09-0001, le prochain enregistrement doit être attribué 09-0002 et donc une ... des idées? Je pense à remplacer la méthode de sauvegarde, mais comment exactement je ne suis pas si sûr p>
3 Réponses :
autofield est le type de champ que Django utilise pour la propriété de la classe de base de modèle '' ID 'de la classe de base, mais vous pouvez l'utiliser pour des champs d'auto-interprétation supplémentaires. P>
Je ne pense pas que vous puissiez faire un formatage comme dans votre exemple, mais une bonne approche serait de créer un type de champ personnalisé qui remplace la méthode Save () pour effectuer le formatage souhaité. P>
Je verrai si je peux faire ça ... Je pensais qu'il y avait un moyen plus facile d'essayer de récupérer la valeur de l'enregistrement précédent pour ce domaine puis de l'ajouter à 1. De toute façon merci
Un seul autofield par modèle est actuellement autorisé dans Django et il est utilisé pour le champ primaire.
Django ne vous laissera pas avoir plus d'un autofield dans un modèle et vous en avez déjà un pour votre clé principale. Vous devrez donc remplacer une sauvegarde et aura probablement besoin de regarder en arrière à la table pour déterminer quoi d'incrémenter.
quelque chose comme ceci: p> Notez que, sans aucune sorte de verrouillage de votre méthode de sauvegarde, vous pouvez rencontrer un problème de concurrence (deux threads essayant de stocker les mêmes valeurs. en code et numéro). p> p>
Pour réparer des problèmes de concurrence, vous pouvez utiliser top = product.Object.select_for_update (nowité = true) .Order_by ('- CO de', '- Number') [0] Code>
Oui, utilisez select_for_update () code>, mais assurez-vous que votre RDBMS prend en charge la ligne de verrouillage en ligne en premier! (récent mysql et postgres font).
dans SQL: dans django: p> Lors de l'enregistrement, le code code> sera augmenté automatiquement. P> p>