簡體   English   中英

Django:將 Model 字段值寫入另一個模型下拉列表?

[英]Django: Writing Model Field-Value into another Models Dropdown List?

我得到了一個帶有一堆下拉列表的 Model“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')

我剛剛使用一些硬編碼輸入測試了那些下拉字段的選擇,但我實際上想從 Model處理器的字段名稱表中獲取“處理器” -Dropdown-Field 的選擇的所有數據:

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

所以我的問題是:是否有可能獲取名稱-Fields 的Processors-Model中的所有值,也許像當前的硬編碼輸入一樣將它們寫入一個數組,以便能夠在PC_Configuration的下拉字段中顯示它們Model?

簡短編輯:我嘗試使用類似的東西:

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

但似乎“PC_Configuration.objects”不存在..

您可以在 model 中擁有該表的 ForeignKey 可以說:

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

你可以為 PC_Configuration 創建一個 model 表單

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM