1

Django 1.6 を使用して、Django の組み込み管理機能を使用してレガシー データベースに管理機能を提供しています。

私はinspectdbモデルを生成し、適切にクリーンアップするために使用しましたが、私を悩ませている部分が 1 つあります。スキーマは、私がテーブルを持っているように、厄介な方法で設計されています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常にレコードと 1 対 1 でcustomers並んでおり、戻ってこれを変更するにはレガシー コードが多すぎます。これは、レコードを結合する単一の Django モデルを作成して、 etc. 属性Customerを持つオブジェクトを作成できる方法ですか?.first_name

4

1 に答える 1

1

Django の組み込み管理機能を使用しているとのことでした。その場合は、ModelAdminforを作成してからとしてCustomers追加できます。これにより、「親モデルと同じページでモデルを編集する機能」が得られます。CustomerDataInlineModelAdmin

あなたの場合、次のようになります。

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_name、およびphoneをそれぞれ の形式で編集できますCustomers

于 2014-06-03T19:00:25.123 に答える