[英]Many to Many and Foreign Key relations in django admin
首先,我的django知識是初學者,所以請耐心等待。 我面臨着一個我不知道該如何處理的模型關系。 我有3個模型:Project,Location和SubLocation。
一個項目可以有多個位置,每個位置可以有許多子位置。 我在Project模型中有多個字段可用於定位,而在Sublocation模型中有一個外鍵字段可用於定位。
class Project(models.Model):
...
locations = models.ManyToManyField(Location)
class Location(models.Model):
name = models.CharField(max_length=250, unique=True)
class SubLocation(models.Model):
location = models.ForeignKey(Location)
name = models.CharField(max_length=100, unique=True)
在Django管理員中,我能夠在創建項目時添加多個位置(使用filter_horizontal)。 但是,我還需要基於創建的項目的添加位置來選擇子位置的選項。 我不知道如何使用上述方法。
然后,我嘗試了以下方法,從項目模型中刪除了多對多地點的位置。
我創建了一個ProjectLocation模型,並將其作為內聯添加到Project ModelAdmin中,以便在創建項目時可以添加位置和子位置。 該模型如下所示:
class ProjectLocation(models.Model):
project = models.ForeignKey(Project)
location = models.ManyToManyField(Location)
sublocations = models.ManyToManyField(SubLocation)
但是,該方法無法按需工作,因為您可以添加任何子位置,而不管添加的位置如何。 我希望能夠在創建項目時添加位置及其相關的子位置。
我通讀通用關系是另一種可能的方法,但我仍然不知道如何實現。
我認為,如果您使用外鍵,這將使您的情況變得更容易,並且可以與django的_set
選項一起使用。
保留原樣,並嘗試在管理頁面中使用內聯 。
因此,您的admins.py看起來像這樣:
class SubLocationInline(admin.StackedInline):
model = SubLocation
@admin.register(Location)
class LocationAdmin(admin.ModelAdmin):
.....
inlines = [SubLocationInline]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.