Django模型定义URLFields列表

时间:2010-10-11 00:41:38

标签: django-models relational-database

我对关系数据库很新,这可能就是我遇到这个问题的原因,但我有一个模型 - Post。

我希望它有可变数量的URL,但是Django似乎只有OneToManyField需要一个模型(不是字段 - 这是一个URLField)。

1 个答案:

答案 0 :(得分:1)

在关系数据库设计中,表中的字段始终是标量值。在你的情况下,这样的字段将是“一个网址”。将集合应用于行的方式,使用另一个表的行加入该行。在django的说法中,这意味着你需要两个模型,一个用于Post个对象,另一个用于链接多个网址与该帖子。

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成员

访问网址了

但是如果你想让Post的管理页面也让你添加网址,你需要用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)