[英]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.