2012-04-26 50 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