2011-04-20 74 views
2

我会如何从外键预填充slug字段?下面是如何我的一些模型都是建立:从Django中的外键预填充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,但我想我需要它来preopulate的外键的slu。。我会如何去做这件事?我正在使用Django 1.3。我检查了其他线程,但他们似乎指的是几年前的Django版本不再工作。

我需要标题来显示问题列表。到目前为止,它的工作。您可以点击问题链接查看问题显示的内容。

我觉得如果返工的标题抽象类的方式Skidoosh不会让我查看对象的子集....

回答

2

如果您检查文档(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) 

您需要的顺序声明的类!

希望有帮助!

+0

OH!你是对的...这将工作。谢谢。 – AAA 2011-04-20 11:42:04

+0

等等,会这样做吗?家长之子模型允许我显示与问题相关的标题列表? – AAA 2011-04-20 11:48:39

+0

你能给我一个你试图解决的问题的简单例子吗?我应该能够从中引导你。 – 2011-04-20 12:41:31