2010-04-19 6 views
2

Je veux avoir un modèle de django comme ceci:Un modèle django peut-il intégrer des classes?

class Model(models.Model): 
string = models.CharField() 
class ContactDetails: 
    phone = models.IntegerField() 

Est-ce possible? J'ai essayé googler, mais il ne semble pas répondre à ma question

Cela signifie que j'aurais tout accesssing:

Model().ContactDetails.phone 

travailler comme ça :)

Joe

Répondre

1

Il peut avoir des classes incorporées (un cas courant est class Meta), mais tous les membres models.*Field sont ignorés. Cela n'a pas de sens en SQL.

Ce que vous voulez est un many-to-one:

class Thing(models.Model): # Don't name this class 'Model'! 
    name = models.CharField(max_length=100) 

class ContactDetails: 
    parent = models.ForeignKey(Thing, related_name="contactDetails") 
    phone = models.IntegerField() 

Ensuite, pour l'accès:

thing = Thing(); 
# ... set up thing ... 
thing.save() 
contact1 = ContactDetails(parent=thing) 
# ... set up contact1 ... 
contact1.save() 
contact2 = ContactDetails(parent=thing) 
# ... set up contact2 ... 
contact2.save() 
# ... 
thing.contactDetails.all() 
# returns a list with contact1 and contact2 

ou autre chose.

+0

Merci! :) Cela m'a vraiment aidé! –

Questions connexes