Django管理后台可编辑的关联模型字段?
在阅读了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
对于只读字段,这个任务相对简单。只需定义一个方法来返回相关模型的字段,然后把它放到readonly_fields
属性中。但是,编辑字段该怎么做呢?
1 个回答
-1
你只需要把 Contact.email 加到 'fields' 列表里就可以了:
'fields': ('organization_name', 'bill_addressee', 'Contact.email',)