2010-02-04 5 views
2

J'ai une table db qui a un tableau entier. Mais comment puis-je ajouter ce champ dans mon modèle? J'ai essayé de l'écrire en utilisant IntegerField mais enregistrer donne erreurcomment utiliser array dans django

int() argument must be a string or a number, not 'list 

Comment puis-je ajouter ce champ à mon modèle? J'utilise ce champ dans mon views.py donc je dois l'ajouter dans mon modèle. Aucune suggestion?

+0

Quel est le type de données dans votre base de données? Quelle base de données utilisez-vous? –

Répondre

7

Vous pouvez être intéressé à utiliser un CommaSeparatedIntegerField.

Si vous avez une liste d'entiers comme ceci:

my_ints = [1,2,3,4,5] 

et un modèle comme celui-ci:

class MyModel(models.Model): 
    values = CommaSeparatedIntegerField(max_length = 200) 

vous pouvez enregistrer my_ints dans un MyModel comme celui-ci:

m = MyModel(values = ','.join(my_ints)) 
m.save() 
1

Je voudrais regarder dans database normalization. En particulier, votre base de données n'est même pas en 1ère forme normale, la première et probablement la plus significative des formes normales qui stipule que les données normalisées ne doivent pas contenir de groupes répétitifs. Par conséquent, le mappeur relationnel objet Django aura beaucoup de mal à modéliser vos données. En ne supportant que des types uniques et non-répétés, Django assure dans un sens la 1ère forme normale des données. Vous pourriez essayer d'écrire votre propre SQL pour gérer ce domaine particulier ou peut-être trouver du code sur Internet, mais peut-être serait-il préférable de refactoriser ce champ en une relation plusieurs-à-un dans son propre modèle. Vous pouvez trouver la documentation de Django sur ce here.

1

La réponse de Clueless est probablement la meilleure que vous puissiez obtenir, mais dans le cas où vous voulez toujours stocker un tableau de nombres dans un seul champ, vous pouvez le faire - soit manuellement, par ex. décapage et puis stocker à TextField, ou en écrivant un champ de modèle personnalisé qui fait quelque chose comme ça pour vous automatiquement.

Voici le doc: http://docs.djangoproject.com/en/1.1/howto/custom-model-fields/

1

Je l'ai eu en travaillant en disant textfield dans mon modèle. Depuis que je n'utilise que f Le fait de lire n'a pas d'effet sur moi

Questions connexes