56 votes

Django: Créer des montages sans spécifier une clé primaire?

L'une des choses qui me dérange à propos de Django appareils que vous avez à spécifier chaque modèle de la clé primaire. Est-il possible de créer des montages sans avoir à spécifier une clé primaire pour chaque ligne?

80voto

spookylukey Points 2249

Utiliser "pk: null," au lieu de "pk: 1" (ou autre), qui aura pour conséquence la PK être défini sur Aucun, et lorsque l'objet est enregistré une clé primaire sera attribué.

Cela fonctionne pour YAML au moins, j'imagine que vous l'utilisez que si vous créez à la main.

13voto

Eduardo Points 10141

Vous devriez jeter un oeil à des Clés Naturelles si vous êtes wiling à ajouter des relations sans l'aide de pk est

http://docs.djangoproject.com/en/1.2/topics/serialization/#natural-keys

0voto

David Wolever Points 34304

Un ami m'a suggéré l' fixture module de: http://farmdev.com/projects/fixture/

0voto

Andrey Belyak Points 125

J'ai eu à traiter avec les DB schéma sans possibilité de le changer, j'ai donc besoin d'une table avec des complexes de clé primaire ou sans elle à tout, mais pas avec la série un. Ce que j'ai fait:

J'ai spécifié un primary_key=True dans le domaine, ce qui ne devrait pas être unique à tous et écrit méthode surchargée:

class ContraIndicationsMedicines(models.Model):

    contra_indication = models.ForeignKey(ContraIndication, primary_key=True)
    medicine = models.ForeignKey(Medicine)

    def validate_unique(self, exclude=None): 
        pass

En fait, il a travaillé pour mes besoins, mais il y a plus de validations appeler à l'intérieur de django.contib.admin.* et pas tous les inlines e.t.c sont garantis de travailler. C'était la seule solution que j'ai pu mettre en œuvre... ((

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X