Django形成奇怪的模型关系

时间:2012-04-26 19:04:11

标签: django django-forms

我正在使用一个我无法修改的现有数据库,并且在尝试处理在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')
    ...

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

1 个答案:

答案 0 :(得分:0)

要更改模型,您可能需要使用django-south http://south.aeracode.org/docs/ 至于在您的forms.py下显示“手机”,您可能需要像这样设置类元。有了这个,模型的任何变化都会反映出变化

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

在模型中,您可能希望在手机和人之间使用Forekey之前的关系。在这里更好地看到https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey