ForeignKey возвращает идентификатор при редактировании формы - PullRequest
0 голосов
/ 02 декабря 2010

Это моя модель

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

Я использую форму для замены поля ForegnKey на CharField

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 голосов
/ 02 декабря 2010

Я исправил это, сделав заголовок уникальным и добавив параметр to_field к ForeignKey в моем классе категории.Это код:

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

Спасибо

0 голосов
/ 02 декабря 2010

Я не проверял это решение (сейчас не могу создать тестовое приложение) и не уверен, что оно работает.

Попробуйте добавить exclude = ("title", ) в качестве члена CategoryForm. Также может понадобиться переопределить метод save () (и, возможно, другой) класса CategoryForm.

...