2010-11-24 82 views
0

我有一個字段「名」,它會自動從「FIRST_NAME」和「姓氏」中的一個子類構成:設置編輯=只是假的子類

from django.db import models 
from django.utils.translation import ugettext_lazy as _ 

class Actor(models.Model): 
    name = models.CharField(_('name'), max_length=60) 

class Company(Actor): 
    pass 

class Person(Actor): 
    first_name = models.CharField(_('first name'), max_length=30, blank=True) 
    last_name = models.CharField(_('last name'), max_length=30, blank=True) 
    email = models.EmailField(_('e-mail address'), unique=True) 

    def save(self, *args, **kwargs): 
     if self.first_name or self.last_name: 
      self.name = (self.first_name + ' ' + self.last_name).strip() 
     else: 
      self.name = self.email 
     super(Person, self).save(*args, **kwargs) 

我想在「名稱」字段可以在Actor和Company模型中編輯,但不能在Person模型中編輯。我怎麼能做到這一點?

我不能加入

name = models.CharField(_('name'), max_length=60, editable=False) 

到Person模型覆蓋領域的定義,因爲Django的類‘人’的衝突引起了FieldError(「本地場‘名’與基地類似名稱的領域班'演員'「)。

回答

0

忘記editable,並在模型的ModelAdmin排除外地來代替:

from django.contrib import admin 

admin.site.register(Person, exclude=['name']) 
相關問題