2011-10-26 50 views
1

我的问题很简单:与Django的外键属性实例化对象外壳

在Django的壳牌如何实例化需要一个外键属性的对象?

的models.py

class Musician(models.Model): 
    first_name = models.CharField(max_length=50) 
    last_name = models.CharField(max_length=50) 
    instrument = models.CharField(max_length=100) 

class Album(models.Model): 
    artist = models.ForeignKey(Musician) 
    name = models.CharField(max_length=100) 
    release_date = models.DateField() 
    num_stars = models.IntegerField() 

在Django的壳...

p = Person(
     first_name="Fred" 
     ,last_name="Flintstone" 
     ,instrument="guitar" 
    ) 

p.save() 

... 

a = Album(
     artist = " "    #<------ WHAT DO I PUT HERE ? :))))) 
     ,name="u rock " 
     ,release_date ="today" 
     ,num_stars="4" 
    ) 
a.save() 

谢谢!

艾玛迪斯

回答

3

当实例化一个模型,ForeignKey的领域需要被设置到适当的相关模型的实例。你的情况:

p = Musician(
    first_name="Fred", 
    last_name="Flintstone", 
    instrument="guitar" 
) 
p.save() 

import datetime 
a = Album(
    artist=p, 
    name="u rock", 
    release_date=datetime.datetime.now().date(), 
    num_stars=4 
) 
a.save() 

请注意,我还修正了一些你的错别字,并使用了正确的数据类型为RELEASE_DATE和NUM_STARS属性。