Hi,

what I'm trying to do seems to be a little hard. I've got three model-classes:

class A(models.Model):
    ...

class B(models.Model):
    ...

class C(models.Model):
    a = models.ForeignKey(A)
    b = models.ForeignKey(B)
    ...

    class Meta:
        unique_together = ('a', 'b')
    ...


In admin.py C is defined as a inline of B. I'm now trying to add inlines of C for each instance of A (that already works). Plus I want to preset the foreign keys to A in the inline forms & make it the only available choice - each inline gets it's own instance of A.
Here is want I already did in admin.py:

class CInline(admin.TabularInline):
        model = C
    ...

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'a':
            a = self.as[self.a_counter]
            self.a_counter = (self.a_counter + 1) % len(self.as)

kwargs["queryset"] = A.objects.filter(pk=a.id) # bad for performance
            db_field.default = a


return super(CInline, self).formfield_for_foreignkey(db_field, request, **kwargs)


class BAdmin(admin.ModelAdmin):
    model = B
    inlines = ( CInline, )

    def add_view(self, request, form_url='', extra_context=None):

        inline = self.inlines[0]
        inline.max_num = len(a.objects.all())
        inline.extra = len(a.objects.all())

        inline.language_counter = 0
        inline.languages = a.objects.all()

return super(BAdmin, self).add_view(request, form_url, extra_context)


Problem is that formfield_for_foreign doesn't seem to be called for all foreign_keys in each inline element of the add page. Or maybe the formfield gets reused. The result is that all inline elements get the same queryset and default value.

I'm a lithe bit stuck here. Maybe there is a complete other way to solve my problem.

Cheers


--
You received this message because you are subscribed to the Google Groups "Django 
users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to