使用具有遗留数据库模式的Django模型的连接结果

时间:2014-06-03 17:24:38

标签: python django django-models legacy inspectdb

我使用Django 1.6使用Django的内置管理功能为旧数据库提供管理功能。

我已经使用inspectdb来生成模型并对其进行了适当的清理,但是有一部分是在困扰我。架构是以一种笨拙的方式设计的,因此我有一个表customers

class Customers(models.Model):
    id = models.IntegerField(primary_key=True)
    billing_id = models.IntegerField()
    option1 = models.BooleanField()
    created = models.DateTimeField()

以及customer_data

class CustomerData(models.Model):
    cust_id = models.OneToOneField('Customers', primary_key=True)
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    phone = models.CharField(max_length=100)

customer_data记录始终与customers记录一对一排列,并且有太多遗留代码可以返回并更改此记录。这是某种方式,我可以有一个连接记录的Django模型,以便我可以拥有Customer属性的.first_name对象吗?

1 个答案:

答案 0 :(得分:1)

您说您正在使用Django的内置管理功能。如果是,那么您可以为Customers创建ModelAdmin,然后将CustomerData添加为InlineModelAdmin。这将使您能够在与父模型相同的页面上编辑模型。"

在你的情况下,它看起来像:

from django.contrib import admin

class CustomerDataInline(admin.StackedInline):
    model = CustomerData

class CustomersAdmin(admin.ModelAdmin):
    inlines = [CustomerDataInline,]

admin.site.register(Customers, CustomersAdmin)

这样您就可以以first_name的形式编辑相关字段last_namephoneCustomers