ForeignKey在编辑表单时返回id

时间:2010-12-02 13:23:39

标签: python django django-models django-forms

这是我的模特

class Category(models.Model):
    title = models.ForeignKey(Title, verbose_name="Title")
    class Meta:
        ordering = ['title']
    def __unicode__(self):
        return self.title.title

我正在使用表单来替换CharField

的ForegnKey字段
class CategoryForm(forms.ModelForm):
    title = forms.CharField(label = "Title")
    class Meta:
        model = Category

class CategoryAdmin(admin.ModelAdmin):
    form = CategoryForm

我的标题模型

class Title(models.Model):
    title = models.CharField("Title", max_length=200)

    def __unicode__(self):
        return self.title

当我添加和显示类别时,一切正常,但当我尝试编辑类别时,我在标题字段中获取ForeignKey ID。我希望它是标题字符串。有办法吗?

非常感谢

2 个答案:

答案 0 :(得分:0)

我没有检查过这个解决方案(我现在无法创建测试应用程序),我不确定它是否有效。

尝试将exclude = ("title", )添加为CategoryForm成员。也许你需要覆盖CategoryForm的save()(也许是其他)方法。

答案 1 :(得分:0)

我已经通过使标题唯一并在我的类别类中为ForeignKey添加to_field选项来解决这个问题。这是代码:

class Title(models.Model):
    title = models.CharField("Title", max_length=200, unique=True)

    def __unicode__(self):
        return self.title
class Category(models.Model):
    title = models.ForeignKey(Title, verbose_name="Title", to_field='title')

    class Meta:
        ordering = ['title']

    def __unicode__(self):
        return self.title.title

谢谢