2009-04-02 1 views
1

я в настоящее время есть три модели:Джанго структура модели для многих многих relasionship на основе третьей модели

class Request(models.Model): 
    requester=models.CharField() 
    dateRequested = models.DateField(auto_now=True) 
    title= models.CharField(max_length=255) 
    description = models.TextField() 

class RequestType(models.Model): 
    requestType=models.CharField('Request Type', max_length=256) 

class RequestTypeInfo(models.Model): 
    requestType=models.ForeignKey('RequestType', verbose_name='Request Type') 
    title = models.CharField('title', max_length=256) 
    info = models.CharField(max_length=256, blank=True) 

Идея заключается в том, что каждый запрос показывает общую информацию для всех типов запросов и дополнительных полей представлены в пользователи должны быть заполнены в зависимости от выбранного типа запроса.

Как я могу изменить модели, чтобы это разрешить, и как написать представление, чтобы отобразить форму для пользователя, чтобы дополнительная информация отображалась в строке с базовым запросом. Было бы лучше иметь второе представление, которое запрашивает дополнительную информацию.

Конечная цель состоит в том, что администраторы могут создавать новые типы запросов без создания моделей на python, просто добавляя новый запрос и добавляя любые дополнительные информационные поля.

+0

Имеет ли класс RequestTypeInfo только заголовки и поля информации или могут быть разные поля для каждого RequestType? –

+0

¿donde esta, Morchuboo? –

+0

Я хочу, чтобы пользователи-администраторы могли создавать новые типы запросов в бэкэнде администратора, которые могут иметь дополнительную информацию, требуемую от пользователей при создании запроса этого типа запроса ... ... смысл? – Morchuboo

ответ

1

Как вы заявляете, что хотите создать связь «Много-ко-многим» из запроса в RequestTypeInfo с использованием RequestType в качестве промежуточной модели?

class Request(models.Model): 
    requester=models.CharField() 
    dateRequested = models.DateField(auto_now=True) 
    title= models.CharField(max_length=255) 
    description = models.TextField() 
    request_type = models.ManyToManyField(RequestType, through='RequestTypeInfo') 

class RequestType(models.Model): 
    requestType=models.CharField('Request Type', max_length=256) 

class RequestTypeInfo(models.Model): 
    requestType=models.ForeignKey('RequestType', verbose_name='Request Type') 
    title = models.CharField('title', max_length=256) 
    info = models.CharField(max_length=256, blank=True) 

Мы можем поговорить о встроенных моделях администратора после того, как это выяснится.