2012-04-26 62 views
0

我正在处理一个现有的数据库,我无法修改,并且在尝试处理在Django中修改数据库时出现了一些问题。所讨论的结构如下,所有模型都是非托管的。Django与奇怪的模型关系形式

class Persons(models.Model): 
    personid = models.BigIntegerField(primary_key=True, db_column='PersonID') 
    .... 

class Phones(models.Model): 
    phoneid = models.BigIntegerField(primary_key=True, db_column='PhoneID') 
    number = models.CharField(max_length=60, db_column='Number', blank=True) 
    type = models.CharField(max_length=15, db_column='Type', blank=True) 
    ... 

class Personsphones(models.Model): 
    personphoneid = models.BigIntegerField(primary_key=True, db_column='PersonPhoneID') 
    personid = models.ForeignKey(Persons, db_column='PersonID') 
    phoneid = models.ForeignKey(Phones, db_column='PhoneID') 
    ... 

我想创建一个表格来显示所有的与特定的“人”,此外能够修改/添加/删除“手机”属于“人”相关的“手机”。现在我唯一能想到的就是在modelformset中显示'Phones',然后手动添加或删除'Phones'设置'Personsphones'关系。关于如何最好地处理这个模型设置的任何想法?

回答

0

要对模型进行更改,您可能需要使用django-south http://south.aeracode.org/docs/ 至于在forms.py下显示“手机”,您可能需要像这样设置类元。与此有关的模型所做的任何更改将反映在变化

class Meta: 
    model = Persons 
    exclude = ('user') 

在模型中,你可能希望使用手机和人之间的外键关系脱颖而出。更好地看到在这里的行动https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

+0

谢谢,但也许我不清楚我的意思是无法修改数据库。我的意思是数据库模式不能因为我的控制之外的因素而改变。如果我能够在电话和人员之间拥有外键,我就不会有问题。 – 2012-04-26 20:22:03