2009-10-22 7 views
9

Django 기반 사이트에서 모델 상속을 시도하여 DRY를 준수합니다. 내 목표는 BasicCompany라는 추상 기본 클래스를 사용하여 Butcher, Baker, CandlestickMaker (각자의 이름으로 자체 앱에 위치) 세 가지 하위 클래스에 대한 공통 정보를 제공하는 것입니다.외래 키가있는 Django의 추상 기본 클래스 상속

각 하위 클래스에는 이메일 주소, 전화 번호, URL 등 가변 개수의 항목이 필요하며 그 수는 0 이상입니다. 그래서 나는이 클래스들과 그들이 참조하는 회사 사이에 many-to-one/foreignKey 관계를 원한다. 내가 할 방법을 모르는 무엇

from django.contrib.auth.models import User 
from django.db import models 

class BasicCompany(models.Models) 
    owner = models.ForeignKey(User) 
    name = models.CharField() 
    street_address = models.CharField() 
    #etc... 

    class Meta: 
     abstract = True 

class EmailAddress(models.model) 
    email = models.EmailField() 
    basiccompany = models.ForeignKey(BasicCompany, related_name="email_addresses") 

#etc for URLs, PhoneNumbers, PaymentTypes. 

가 하위 클래스로의 EmailAddress, URL을 PHONENUMBERS (등) 상속입니다 : 여기처럼 보이는 BasicCompany/models.py을 상상하는 것을 대략이다. 그것을 할 수 있습니까, 그렇다면 어떻게 할 수 있습니까? 그렇지 않은 경우 해결 방법에 대한 조언을 보내 주시면 감사하겠습니다.

답변

6

모든 것을 기본 클래스에 묶는 대신 링크에 대해 generic relations을 사용하는 것이 더 나을 것으로 생각됩니다. 일반 관계를 사용하면 EmailAddress와 같은 모델을 다른 클래스에 연결할 수 있으므로 사용 사례에 잘 맞는 것으로 보입니다.

+0

감사합니다. Daniel. 나는 contenttypes와 일반적인 관계를 어제보고 있었지만, 실제로 클릭하지는 않았다. 지금 시도해보고 문제가 해결되는지 확인하십시오. –