2010-10-11 77 views
0

我是相當陌生的關係數據庫,這可能是爲什麼我有這個問題,但我有一個模型 - 後。Django模型定義的URLFields列表

我希望它具有可變數量的URL,但Django似乎只有OneToManyField,它需要一個模型(不是字段 - 哪個URLField是)。

回答

1

在關係數據庫設計中,表中的字段總是標量值。在你的情況下,這樣的領域將'一個網址'。您將某個集合應用到某一行的方式,您將加入該行與另一個表的行。用Django的說法,這意味着你需要兩個模型,一個用於Post對象,另一個用於鏈接多個URL和該帖子。現在

class Post(models.Model): 
    pass 

class Url(models.Model): 
    url = models.URLField() 
    post = models.ForeignKey(Post) 


myPost = Post.objects.all().get() 
for url in myPost.url_set.all(): 
    doSomething(url.url) 

你可以通過一個urls成員

訪問網址,但如果你想獲得郵政管理頁面也讓你添加的網址,你需要做一些技巧與InlineModelAdmin

from django.db import models 
from django.contrib import admin 


class Post(models.Model): 
    pass 

class Url(models.Model): 
    url = models.URLField() 
    post = models.ForeignKey(Post) 


class UrlAdmin(admin.TabularInline): 
    model = Url 

class PostAdmin(admin.ModelAdmin): 
    inlines = [UrlAdmin] 

admin.site.register(Post, PostAdmin) 
+0

感謝TokenMacGuy,因此,所有的帖子需要的是ForiegnKey被稱爲?就像,我不必明確定義與Post的關係? – Jono 2010-10-11 00:57:56

+0

沒錯。沒有引用本身就是一個集合,就沒有辦法引用一組元素。關係模型有不同的處理方式,這反映在django ORM中。 – SingleNegationElimination 2010-10-11 00:59:04

+0

嗯。 Django管理員應該能夠處理這個問題嗎?因爲現在看起來它添加了一個URLField表單。 =/ – Jono 2010-10-11 01:10:44