簡體   English   中英

Django:在單個網頁上創建多個具有外鍵依賴項的類實例

[英]Django: Creating multiple class instances on a single webpage, with Foreign Key dependencies

我的models.py有以下代碼:

class Application(models.Model):
    team_name = models.CharField(max_length=100)
    ...

class Participant(models.Model):
    name  = models.CharField(max_length=100)
    grade = models.SmallIntegerField(choices=GRADE_CHOICES, blank=True, null=True)
    application = models.ForeignKey(Application, related_name="participants")
    ...

即,有多個Participants ,每個Participant將在一個應用程序上。 (定義為每個Application將有8位Participants )。

該代碼的預期目的是使用戶能夠創建一個新的應用程序,並在該應用程序上命名為8個Participants 創建Application ,還應創建並鏈接8個新的Participants實例,以使每個Participant都將新創建的Application作為其外鍵。

我目前正在努力創建一個可以處理此創建過程的表單/視圖。 我希望向用戶展示一個單一的網頁,該網頁提供允許用戶創建新Application (名稱等)的輸入表格,以及8個新Participants (每個人都有名稱,等級等)。

我當前的forms.py有:

class ApplicationForm(forms.ModelForm):
    """
    A form that edits an application and all of its participants.
    """

    nationality = forms.CharField(disabled=True, required=False)

    class Meta:
        model = Application
        fields = '__all__'

但是我意識到,這並沒有向用戶顯示在創建此Application創建8個新Participants所需的內容。 如何修改我的forms.py ,以便在創建Application為用戶創建8個Participants提供空間?

我能想到的唯一解決方案是在一個視圖中手動列出8個Participant表單調用,但我認為必須有一個更好的解決方案。

您正在尋找的是Django Formets

表單集是抽象層,可用於同一頁面上的多個表單。 與數據網格相比,它可能是最好的選擇。 假設您具有以下形式:

還有一個ModelFormSet

像常規的表單集一樣,Django提供了兩個增強的表單集類,這些類使使用Django模型變得容易。

這些可用於在單個頁面中創建給定模型的多個實例。 唯一的麻煩是它有點學習曲線,並且用戶體驗不如Angular或React所能提供的那樣好。

暫無
暫無

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

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