我对关系数据库很新,这可能就是我遇到这个问题的原因,但我有一个模型 - Post。
我希望它有可变数量的URL,但是Django似乎只有OneToManyField需要一个模型(不是字段 - 这是一个URLField)。
答案 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)