2012-02-12 60 views
0

我有4个假设的模型领域:确定属于许多人Django的许多链接

class Basea(models.Model): 
    name = models.CharField("Name", max_length=30) 
    type = models.ManyToManyField('Type', blank=True, related_name='types', db_table=u'test_basea_type') 

class Baseb(models.Model): 
    name = models.CharField("Name", max_length=30) 
    type = models.ManyToManyField('Type', blank=True, related_name='types', db_table=u'test_baseb_type') 

class Basec(models.Model): 
    name = models.CharField("Name", max_length=30) 
    type = models.ManyToManyField('Type', blank=True, related_name='types', db_table=u'test_basec_type') 

class Type(models.Model): 
    name = models.CharField("Name", max_length=30, unique=True) 
    baseas = ManyToManyField_NoSyncdb(Basea, blank=True, related_name='type_baseas', db_table=u'test_basea_type') 
    basebs = ManyToManyField_NoSyncdb(Baseb, blank=True, related_name='type_basebs', db_table=u'test_baseb_type') 
    basecs = ManyToManyField_NoSyncdb(Basec, blank=True, related_name='type_basecs', db_table=u'test_basec_type') 

我创建一个新的类型,我要附加的新类型的对象后,许多一对多链接被保存。在我看来,这工作得很好:

if form.is_valid(): # All validation rules pass 
    new_obj = form.save(commit=False) 
    # Do some stuff 
    new_obj.save() 
    new_obj.baseas.add(link_object.id) #link_object pulled earlier in the code 

因此,我将有一个link_object这两种Basea,Baseb,或PCA的省域。什么代码,我可以用它来改变最后一行:

new_obj.baseas.add(link_object.id) 

使得字段对应于正确的对象类型?所以,如果link_object来自Baseb,代码应执行的功能:

new_obj.basebs.add(link_object.id) 

如何该字段名称更一般定义的?

回答