reli
@reli
Python-devel

Django: Кастомизация M2M модели и ее отрисовка в админке?

Вечер добрый, столкнулся с проблемой кастомизации админки (django-suit), суть заключается в следующем:
имеется модель Product:
- title (char: 255)
- price (deciamal: 10/2)
...
- accesories (M2M: self)
и кастомная модель M2M - ProductAccesories:
- product (FK: Product)
- accessories (FK: Product)
- order (PosInt)
Миграции прошли успешно, таблицы создались, дальше идём в админку, и создаем классы для кастомизации следующего вида:

class AccessoriesAdmin(SortableTabularInline):
    model = ProductAccessories
    verbose_name = u'аксессуар'
    verbose_name_plural = u'аксессуары'
    extra = 1

class ProductAdmin(TranslatableAdmin):
    def __init__(self, *args, **kwargs):
        super(ProductAdmin, self).__init__(*args, **kwargs)
        self.save_as = True
        self.inlines = [ValAdmin, StdAdmin, FeaturesAdmin, SpecificationAdmin, AccessoriesAdmin]
        self.exclude = ('values', 'standards', 'features',
                        'accessories', 'specification_file',)
        self.fieldsets = (
            (None, {
                'fields': (
                    'title', 'price', 'number_code', 'ordering', 'product_type',
                    'desc', 'product_pdf', 'tags', 'purposes',
                    'application',  'package', 'additional', 'is_published',
                    'recommended', 'images',
                )
            }),
        )
        self.form = ProductForm
        self.filter_horizontal = ['purposes', 'standards', 'accessories',
                                  'features', 'values', 'specification_file',
                                  'images', 'tags']
        self.search_fields = ('title', 'pk')


После данного действия, у меня посыпалось со след. ошибкой:
- 'ecommerce.ProductAccessories' has more than one ForeignKey to 'ecommerce.Product'.

Как решить данное? Заранее благодарен любому ответу!
  • Вопрос задан
  • 315 просмотров
Решения вопроса 2
zymanch
@zymanch
python/django web-developer
если я все правильно, то ваш ProductAccesories по логике связан с продуктом полем product. Если так, то попробуйте добавить в админ-класс AccessoriesAdmin атрибут fk_name='product'. Это явно даст понять по какому полю Inline
Ответ написан
Комментировать
reli
@reli Автор вопроса
Python-devel
Всем спасибо за внимание, решилоась проблемка очень просто :)
class AccessoriesAdmin(SortableTabularInline):
    model = ProductAccessories
    fk_name = 'product'
    verbose_name = u'аксессуар'
    verbose_name_plural = u'аксессуары'
    extra = 1
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Nerevar_soul
В ошибке все написано. Из модели ProductAccesories две связи к модели Product. Не видя всего кода могу предположить что надо указать related_name для одного из полей с ForeignKey.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы