添加related_name參數您ForeignKey的上WebsiteIP像這樣:
class Website(models.Model):
name = models.CharField(max_length = 100)
class WebsiteIp(models.Model):
website = models.ForeignKey(Website, primary_key = True, related_name="IPs")
ip = models.CharField(max_length = 40)
introduction_date = models.DateField()
然後,你可以參考IP地址爲多對一從網站一對一映射如下:
website = Website.objects.filter(name="blah")
if website.count():
IPs = website[0].IPs
當然未經考驗,但這應該讓你在正確的方向。另外,請查閱:https://docs.djangoproject.com/en/dev/topics/db/models/#many-to-one-relationships
在你admin.py,您可能有這樣的事情:
class WebsiteAdmin(admin.ModelAdmin):
list_display = ('name',)
search_fields = ['name']
ordering = ('name',)
更新以下內容:
class WebsiteIpInline(admin.TabularInline):
model = WebsiteIp
extra = 1
class WebsiteAdmin(admin.ModelAdmin):
list_display = ('name',)
search_fields = ['name']
inlines = (WebsiteIpInline,)
ordering = ('name',)
應該顯示你想要的!
我知道related_name會在外鍵目標對象上創建該名稱的成員,但我不明白我如何使用它來獲得在django admin的網站編輯頁面上添加/刪除/修改IP的能力? – 2011-12-17 18:56:52
添加到我的答案。 – mkoistinen 2011-12-17 19:06:39
它確實顯示了一個網站的位置,如果我輸入了一些東西然後我可以編輯它,但是我不能添加多個ips(我認爲extra = 1應該意思是「總是爲一個額外的對象創建表單」)? – 2011-12-17 20:24:31