Форум сайта python.su
0
Здравствуйте.
Помогите, плиз, разобраться.
Есть 2 модели:
описание свойств меню
class menu_objects(models.Model):
title = models.CharField(u"Имя меню", max_length=50)
menu_type = models.PositiveSmallIntegerField(u"Тип меню", choices=MENU_TYPE, default=SECONDARY)
block = models.PositiveSmallIntegerField(u"Колонка", choices=BLOCKS, default=LEFT_BAR)
template = models.CharField(u"Шаблон", max_length=30, default="sec_menu.html")
published = models.BooleanField(u"Опубликовать", default=True)
class menu(MPTTModel):
title = models.CharField(u"Заголовок", max_length=50)
parent = models.ForeignKey('self', blank=True, null=True, verbose_name="Родитель", related_name='child')
menu_content = models.PositiveSmallIntegerField(u"Тип материала", choices=MENU_CONTENT, default=2)
category = models.ForeignKey("Category", verbose_name=u"Категории", blank=True, null=True)
page = models.ForeignKey(FlatPage, verbose_name=u"Страницы", blank=True, null=True)
published = models.BooleanField(u"Опубликовать", default=True)
position = models.IntegerField(u"Позиция в списке", default=0)
menu_object = models.ForeignKey("menu_objects", verbose_name=u"Меню", related_name="menu_obj")
class Menu_objectsInlines(admin.TabularInline):
model = menu
extra = 0
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "parent":
kwargs["queryset"] = menu.objects.filter(menu_object__id=1)
return super(Menu_objectsInlines, self).formfield_for_foreignkey(db_field, request, **kwargs)
class menu_objectsAdmin(admin.ModelAdmin):
list_display = ('title', 'menu_type', 'block', 'published')
inlines = [Menu_objectsInlines]
admin.site.register(menu_objects, menu_objectsAdmin)
kwargs["queryset"] = menu.objects.filter(menu_object__id=1)
Офлайн
0
Нашлось решение
В admin.py
В admin.py:
class Menu_objectsInlines(admin.TabularInline):
model = menu
extra = 0
class menu_objectsAdmin(admin.ModelAdmin):
list_display = ('title', 'menu_type', 'block', 'published')
inlines = [Menu_objectsInlines]
def change_view(self, request, object_id, extra_context=None):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == 'parent':
kwargs['queryset'] = menu.objects.filter(menu_object__id=object_id)
return super(Menu_objectsInlines, self).formfield_for_foreignkey(db_field, request, **kwargs)
Menu_objectsInlines.formfield_for_foreignkey = formfield_for_foreignkey
self.inline_instances = [Menu_objectsInlines(self.model, self.admin_site)]
return super(menu_objectsAdmin, self).change_view(request, object_id,
extra_context=extra_context)
admin.site.register(menu_objects, menu_objectsAdmin)
Офлайн