Django: InlineModelAdmin для ссылки на свою собственную модель - PullRequest
1 голос
/ 01 октября 2010

Итак, я пытаюсь настроить систему публикации записей, где пользователь может выбрать группу связанных записей при создании записи.И было бы замечательно, если бы я мог использовать InlineModelAdmin для этого.Но ему все еще нужен чужой ключ, который по какой-то причине я не могу правильно настроить.

Вот упрощенная настройка моей ситуации:

models.py

class Entry(models.Model):
    entry           =   models.ForeignKey('self', related_name='related_entry', null=True, blank=True)
    title           =   models.CharField(max_length=100, verbose_name='title')
    description     =   models.TextField(verbose_name='description')

    def __unicode__(self):
        return self.title

admin.py

class EntryInline(admin.TabularInline):
    model = Entry
    verbose_name = "related entry"

class EntryAdmin(admin.ModelAdmin):
    inlines = [
        EntryInline,
    ]    

admin.site.register(Entry, EntryAdmin)

Проблемы, с которыми я сталкиваюсь, выглядят следующим образом:

Ошибка DatabaseEr в / admin / app / entry / add / column app_entry.entry_id не существуетЛИНИЯ 1: ВЫБЕРИТЕ "app_entry". "Id", "app_entry". "Entry_id", "...

Я все еще просто по колено в волшебном мире django, так что если кто-то сможетукажите мне, где я иду не так, что было бы очень признательно!

1 Ответ

3 голосов
/ 01 октября 2010

Во-первых, я попробовал код, который вы предоставили на моей машине (Django 1.2.3, Python 2.6.2, Ubuntu Jaunty), и, насколько я могу судить, он работал хорошо.пользователь может выбрать связку связанных записей при создании записи.

Если вы не используете отношение ManyToMany, если хотите, чтобы запись была связана с связкой записи?В настоящее время ваш код определяет ForeignKey.

admin.py

...

admin.site.register (Entry, EntryAdmin)

Ваш администратор в настоящее время настроен так, чтобы позволить пользователю добавлять запись, а также (необязательно) одну или несколько связанных записей на той же странице (это работало отлично).Это было ваше ожидание?

...