Возможно ли иметь организованный выбор, чтобы иметь более одного уровня в названных группах.
Или я должен сделать это совершенно по-другому, не используя варианты.
Django документы имеют документацию только на одном уровне, на котором я смог работать.
https://docs.djangoproject.com/en/3.0/ref/models/fields/
Первый элемент в каждом кортеже - это имя, которое будет применяться к группе. Второй элемент представляет собой итерацию из 2-х кортежей, причем каждый 2-кортеж содержит значение и удобочитаемое имя для опции. Сгруппированные параметры могут быть объединены с не сгруппированными параметрами в одном списке (например, параметр «неизвестно» в этом примере).
Я хочу создать класс, поэтому при добавлении метеоритов он попадает в надлежащую классификацию, но также наследует верхние уровни. Например, шерготтский метеорит - это также дифференцированные метеориты, марсианские метеориты.
- дифференцированные метеориты
Я нашел это в Django проекте, который близок к тому, что мне нужно, но Есть несколько дополнительных уровней организации.
MEDIA_CHOICES = [
('Audio', (
('vinyl', 'Vinyl'),
('cd', 'CD'),
)
),
('Video', (
('vhs', 'VHS Tape'),
('dvd', 'DVD'),
)
),
('unknown', 'Unknown'),
]
Ниже я пытаюсь сделать следующее: создать две широкие категории с 3 и 4 подкатегориями и внутри тех, у каждого из которых может быть до двух. подкатегории.
Позже эта группа будет импортирована для сортировки, поиска и большей функциональности.
Вот диаграмма НАСА, которую я использую для классификации в качестве картинки
В тексте
undifferentiated meteorites
chodrites
carbonaceous
CB
CH
CK
CM
CR
CV
CO
CI
ordinary
H
L
LL
rumuruti
R
enstatite
EH
EL
differentiated meteorites
achodrites
primitive achodrites
iodranities
acapulcoites
winonaites
martian
shergottites
nakhites
chassignites
ALH 84001 opx
aubrites
urelities
HED
eurites
diogenites
howardites
angrites
brachinites
lunar
feldspathic breccia
basaltic
polymict
stony iron meteorites
pallasite
mesosiderites
iron metoerites
IAB
IIAB
IIIAB
IVAB
Ungrouped
Other
Я нашел это в Django проекте, который близок к тому, что мне нужно, но есть несколько дополнительных уровней организации.
MEDIA_CHOICES = [
('Audio', (
('vinyl', 'Vinyl'),
('cd', 'CD'),
)
),
('Video', (
('vhs', 'VHS Tape'),
('dvd', 'DVD'),
)
),
('unknown', 'Unknown'),
]
Это то, чего я смог достичь, но это полный лев Я не могу достичь желаемого результата.
from django.db import models
from django.utils import timezone
class Post(models.Model):
CATEGORY_CHOICES = [
('iron metoerites', (
('IAB', 'IAB'),
('IIAB', 'IIAB'),
('IIIAB', 'IIIAB'),
('IVAB', 'IVAB'),
('Ungrouped', 'Ungrouped'),
('Other', 'Other'),
)
),
('stony meteorites', 'stony meteorites'),
('primitive achodrites', (
('iodranities', 'iodranities'),
('acapulcoites', 'acapulcoites'),
('winonaites', 'winonaites'),
)
),
('carbonaceous', (
('CB', 'CB'),
('CH', 'CH'),
('CK', 'CK'),
('CM', 'CM'),
('CR', 'CR'),
('CV', 'CV'),
('CO', 'CO'),
('CI', 'CI'),
)
),
('ordinary', (
('H', 'H'),
('L', 'L'),
('LL', 'LL'),
)
),
('rumuruti', (
('R', 'R'),
)
),
('enstatite', (
('EH', 'EH'),
('EL', 'EL'),
)
),
('martian', (
('shergottites', 'shergottites'),
('nakhites', 'nakhites'),
('chassignites', 'chassignites'),
('ALH84001opx', 'ALH 84001 opx'),
)
),
('HED', (
('eurites', 'eurites'),
('diogenites', 'diogenites'),
('howardites', 'howardites'),
)
),
('angrites', 'angrites'),
('brachinites', 'brachinites'),
('lunar', (
('feldspathic_breccia', 'feldspathic breccia'),
('basaltic', 'basaltic'),
('polymict', 'polymict'),
)
),
('stony-iron meteorites', (
('pallasite', 'pallasite'),
('mesosiderites', 'mesosiderites'),
),
),
]
main_image = models.FileField(upload_to='media/', default='')
second_image = models.FileField(upload_to='media/', default='')
author = models.CharField(max_length=256, default='')
title = models.CharField(max_length=256, default='')
description = models.TextField(default='')
more_info = models.TextField(default='')
l_heading = models.CharField(max_length=256, default='')
l_heading_text = models.CharField(max_length=256, default='')
qoute = models.CharField(max_length=256, default='')
qoute_name = models.CharField(max_length=256, default='')
s_heading = models.CharField(max_length=256, default='')
s_heading_text = models.CharField(max_length=256, default='')
category = models.CharField(
max_length=256, choices=CATEGORY_CHOICES, default='stony meteorites')
created_date = models.DateTimeField(default=timezone.now, blank=True)
text = models.TextField(default='')
tag_1 = models.CharField(max_length=256, default='')
tag_2 = models.CharField(max_length=256, default='')
tag_3 = models.CharField(max_length=256, default='')
class Meta:
ordering = ['-created_date']
def __str__(self):
return self.title
Я самообучаюсь с помощью базовых c Django учебных пособий и базового c поиска в Google по поиску и устранению неисправностей, которые работали до этого. Я открыт для любого решения, но мне было интересно, как лучше добавить что-то с несколькими вложениями внутри.