Django管理员中可编辑的相关模型字段?

时间:2014-05-21 13:14:00

标签: python django django-models django-forms django-admin

在阅读Django管理网站的文档之后,我仍然不确定如何通过遵守以下规则直接在表单中添加相关模型的字段:

  • 不允许直接修改模型源。只有猴子修补或子类化是可能的。
  • 需要在表单中的字段集中的现有字段之间插入,而不是在单独的内联管理模型中插入
  • 字段需要可编辑,相关模型记录在表格保存
  • 时更新

简化示例如下:

from django.db import models
from django import forms

class Order(models.Model):
    contact = models.ForeignKey(Contact, verbose_name=_('Contact'))
    bill_addressee = models.CharField(_("Addressee"), blank=True)

class Contact:
    email = models.EmailField(_("Email"), blank=True, max_length=75)

class OrderAdminForm(forms.ModelForm):
    fieldsets = (
        (_('Billing Address'), {'classes': ('collapse',), 'fields': (
           'organization_name', 'bill_addressee', 'bill_street1', 'bill_city',
           'email',) })
        #  ^^^^^^ <-- need related model field directly
        )

    class Meta:
        model = Order

对于read-ony字段来说,这是一项非常简单的任务。只需定义返回相关模型字段的方法并输入readonly_fields属性。但是可编辑呢?

1 个答案:

答案 0 :(得分:0)

您只需在&#39;字段中包含Contact.email即可。列表:

'fields': ('organization_name', 'bill_addressee', 'Contact.email',)