views:

21

answers:

1

So I am trying to setup an entry posting system, where the user can select a bunch of related entries when creating an entry. And it would be wonderful if I could use the InlineModelAdmin for it. But it keeps wanting a foreignkey, which for some reason I'm unable to set up properly.

Here's a simplified setup of my situation:

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)

The problems im getting are of the likes:

DatabaseError at /admin/app/entry/add/ column app_entry.entry_id does not exist LINE 1: SELECT "app_entry"."id", "app_entry"."entry_id", "...

I'm still just kneedeep into the magic world of django, so if someone could point me out where I am going wrong that would be greatly appreciated!

+2  A: 

First, I tried the code you provided in my machine (Django 1.2.3, Python 2.6.2, Ubuntu Jaunty) and it worked well as far as I could tell.

where the user can select a bunch of related entries when creating an entry.

Shouldn't you be using a ManyToMany relationship if you want an entry to be related to a bunch of entries? Your code currently defines a ForeignKey instead.

admin.py

...

admin.site.register(Entry, EntryAdmin)

Your admin is presently set up to let the user add an entry and also (optionally) one or more related entries in the same page (this worked perfectly). Was this your expectation?

Manoj Govindan
yes that is what i want! then i guess should try to debug my somewhat more complex setup, if it works fine for you, hm.
Kasper
ok it works, but it seems like i do have to go with a many to many :), thanks anyway!
Kasper