На самом деле, ссылка, которой вы поделились, не то, что вам нужно ...
Вам нужна структура таблицы базы данных, которая может хранить определения различных типов и связанные с ними записи ... В этот момент вам, вероятно, потребуется изменить структуру таблицы базы данных ...
Сначала вы можете определить таблицу, в которой будут храниться метки категорий, например
class PetTyper(models.Model):
specy = models.ForeignKey(...)
category = models.ForeignKey(...)
type = models.Foreignkey(...)
...
additional_fields= models.ManyToManyField(AdditionalFields)
class AdditionalFields(Models.Model):
label = models.CharField(_("Field Label")
PetTyper - это базовая таблица записей для типов питомцев, поэтому вы определите каждого питомца в этой таблице, дополнительное поле покажет, какие дополнительные поля будут отображаться в каждой записи. Не забывайте, что в этих таблицах будут записываться базовый тип и дополнительная структура, а не записи о добавленных животных.
Таким образом, такая запись может содержать такую информацию, как:
pettYpe: млекопитающее, собака, лабрадор-ретривер, extra_info = [цвет, вес]
Что говорит о том, что у любой собаки, зарегистрированной как LAbrador Retreiver, будет информация о цвете и весе ...
Для каждого Лабрадора Retreiver, записанного в базу данных, будут записаны данные в следующие таблицы:
class Pet(models.Model):
name = models.CharField(...)
typer = models.ForeignKey(PetTyper) # this will hold records of type, so no need for specy, category and type info in this table
... # and other related fields
class petSpecifications(models.Model):
pet = Models.ForeignKey(Pet) # that data belongs to which pet record
extra_data_type = Models.ForeignKey(AdditionalFields) # get the label of the extra data field name
value = models.CharField(...) # what is that extra info value
Итак, когда вы создадите новую запись о питомце, вы определите petTyper и добавите имена данных каждого дополнительного поля в AdditionalFields. В новой форме записи о домашних питомцах вы сначала получите тип домашнего животного, а затем получите информацию о каждой дополнительной информации из таблицы AdditionalFields. Пользователь будет вводить имя питомца после того, как он / она выберет тип, затем добавит информацию о цвете и весе (из примера выше). Вы получите эту информацию из формы, создадите запись в таблице домашних животных и добавите каждую конкретную информацию об этой записи в таблицу petSpecifications ...
Этот способ довольно сложен, и вы не можете использовать некоторые базовые функции django, например, формы форм и т. Д. Поскольку вы читаете данные из таблицы PetTyper и AdditionalFields и извлекаете из них свою форму. И записать опубликованную информацию в таблицу Pet и спецификации домашних животных ...