从Django中的Foreign Key预填充slug字段

时间:2011-04-20 09:59:05

标签: django foreign-keys slug

我如何从外键预先填充slug?以下是我的一些模型的设置方法:

Class Title(models.Model):
    title = models.CharField(max_length=256)
    slug = models.SlugField() 

class Issue(models.Model):
    title = models.ForeignKey(Title)
    number = models.IntegerField(help_text="Do not include the '#'.")
    slug = models.SlugField()

admin.py:

class IssueAdmin (admin.ModelAdmin):      
    prepopulated_fields = {"slug": ("title",)}    
admin.site.register(Issue, IssueAdmin)

问题预填充的是外键的ID,但我想我需要它预先填充外键的slug。我该怎么做呢?我正在使用Django 1.3。我已经检查了其他线程,但它们似乎是指几年前不再使用的Django版本。

我需要标题才能显示问题列表。到目前为止,它的确有效。您可以单击问题的链接以查看问题所在。

我觉得好像将标题重写为抽象类,Skidoosh不允许我查看对象的子集....

1 个答案:

答案 0 :(得分:3)

如果您查看文档(http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.prepopulated_fields),它会说明您无法引用外键领域。

看着你的设计会不会更好:

class BaseModel(models.Model):
    title = models.CharField(max_length=256)
    slug = models.SlugField()

class Issue(BaseModel):
    number = models.IntegerField(help_text="Do not include the '#'.")

class ComicBookSeries(BaseModel):
    issues = models.ForeignKey(Issue)

您需要按顺序声明类!

希望有所帮助!