Django: Запись поля-значения модели в выпадающий список другой модели?

У меня есть модель "PC_Configuration" с кучей выпадающих списков:

class PC_Configuration(models.Model):
PROCESSOR_CHOICES = (
    ('None', 'Wähle deinen Prozessor'),
    ('1', 'Prozessor1'),
    ('2', 'Prozessor2'),
    ('3', 'Prozessor3'),
)

GRAPHICSCARD_CHOICES = (
    ('None', 'Wähle deine Grafikkarte'),
    ('1', 'Grafikkarte1'),
    ('2', 'Grafikkarte2'),
    ('3', 'Grafikkarte3'),
)

OS_CHOICES = (
    ('None', 'Wähle dein Betriebssystem'),
    ('1', 'Betriebssystem1'),
    ('2', 'Betriebssystem2'),
    ('3', 'Betriebssystem3'),
)

RAM_CHOICES = (
    ('None', 'Wähle deinen Arbeitsspeicher'),
    ('1', 'RAM1'),
    ('2', 'RAM2'),
    ('3', 'RAM3'),
)

HARDDRIVE_CHOICES = (
    ('None', 'Wähle deine Restspeicher-Größe'),
    ('1', 'Festplatte1'),
    ('2', 'Festplatte2'),
    ('3', 'Festplatte3'),
)

processor = models.CharField(max_length=25, choices=PROCESSOR_CHOICES, default='None')
graphicscard = models.CharField(max_length=25, choices=GRAPHICSCARD_CHOICES, default='None')
ram = models.CharField(max_length=25, choices=RAM_CHOICES, default='None')
os = models.CharField(max_length=25, choices=OS_CHOICES, default='None')
harddrive = models.CharField(max_length=25, choices=HARDDRIVE_CHOICES, default='None')

Я только что протестировал варианты этих выпадающих полей с некоторыми жестко закодированными входными данными, но на самом деле я хочу получить все данные для вариантов, например, "процессоры" выпадающего поля из таблицы поля name модели Processors:

class Processors(models.Model):
name = models.CharField(max_length=50)

Итак, мой вопрос: Возможно ли получить все значения внутри name-поля Processors-Model, возможно записать их в массив, как текущий Hardcoded Input, чтобы иметь возможность показать их в выпадающем поле PC_Configuration модели?

Короткое редактирование: Я пытался использовать что-то вроде:

list(PC_Configuration.objects.all().values_list('name', flat=True)) 

Но кажется, что "PC_Configuration.objects" не существует...

Вы можете иметь ForeignKey к этой таблице в вашей модели, допустим:

processor = models.ForeignKey(Processors, models.DO_NOTHING)

Вы можете создать типовую форму для PC_Configuration

class MyForm(forms.ModelForm):
    class Meta:
        model = PC_Configuration

    def __init__(self, *args, **kwargs):
        super(MyForm, self).__init__(*args, **kwargs)
        self.fields['processors'].quereset = Processors.objects.all()
        self.fields['processors'].label_from_instance = lambda obj: "%s" % obj.name
Вернуться на верх