Форум сайта python.su
Собственно, есть 3 модели:
models.py
class ModelA(models.Model):
fieldA=models.ManyToManyField('ModelB', throuth='ModelC')
title=models.CharField()
class ModelB(models.Model):
field1=models.CharField()
title=models.CharField()
class ModelC(models.Model):
modela=models.ForeignKey(ModelA)
modelb=models.ForeignKey(ModelB)
additional_data=models.CharField()
date=models.DateField()
class ModelAAdmin(admin.ModelAdmin):
list_field=('title',)
filter_horizontal=('fieldA',)
class ModelBAdmin(admin.ModelAdmin):
list_field=('title',)
Отредактировано Dr.Livsi (Июнь 30, 2013 14:40:40)
Офлайн
1) Выкинуть django-grapelli
2) Попробуйте использовать many-to-many (A <–> B) c опцией through, которая будет ссылаться на модель C
Офлайн
django-suit вместо grapelli можно взять
Офлайн
lorien, chaotism
1) варианты убрать grappelli не рассматриваются. Этот вопрос не мною решается.
2) В m2m связи уже указана промежуточная модель, если вы не обратили внимание. Я там просто в through опечатался. Я, конечно, не правильно сформулировал 2ю задачу: не просто добавить дополнительные данные, а иметь возможность сделать это в админке.
На самом деле я пока вижу только один вариант: вывести в админку модель С и там проставить эти самые дополнительные данные. Но не очень удобно (получается есть лишние действия: сначала к модели а привязываются объекты из модели b, затем надо заходить в модель С и проставлять дополнительные данные по каждому объединениею a-b). Было бы лучше сделать так: при привязке объектов модели B к объектам модели А, указывать где-то эти самые доп.параметры, которые должны сохраняться в промежуточную модель C.
Отредактировано Dr.Livsi (Июль 1, 2013 11:25:56)
Офлайн
http://stackoverflow.com/questions/3153026/django-1-2-1-inline-admin-for-many-to-many-fields гляньте тут, люди обсуждают как inline интерфейс настроить для many-to-many, это вроде бы то, что вам нужно.
Офлайн
Спасибо :) Не смотрел, что там, но наверное именно так я уже и сделал. Через Inline.
Офлайн