Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2013 14:36:54

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

django-grappelli and ManyToManyField

Собственно, есть 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()

Есть файл admin.py:
class ModelAAdmin(admin.ModelAdmin):
list_field=('title',)
filter_horizontal=('fieldA',)

class ModelBAdmin(admin.ModelAdmin):
list_field=('title',)

Проблема такова: в django-grappelli, в админке не отображается поле ManyToManyField.
Собственно, кроме данной проблемы есть еще один вопрос:
Как сделать так, что бы при добавлении в модель А объектов из модели Б можно было так же добавлять дополнительные данные в промежуточную таблицу ModelC



Отредактировано Dr.Livsi (Июнь 30, 2013 14:40:40)

Офлайн

#2 Июль 1, 2013 09:13:25

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

django-grappelli and ManyToManyField

1) Выкинуть django-grapelli
2) Попробуйте использовать many-to-many (A <–> B) c опцией through, которая будет ссылаться на модель C

Офлайн

#3 Июль 1, 2013 10:51:15

chaotism
От:
Зарегистрирован: 2010-11-29
Сообщения: 76
Репутация: +  1  -
Профиль   Отправить e-mail  

django-grappelli and ManyToManyField

django-suit вместо grapelli можно взять



Офлайн

#4 Июль 1, 2013 11:20:31

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

django-grappelli and ManyToManyField

lorien, chaotism
1) варианты убрать grappelli не рассматриваются. Этот вопрос не мною решается.
2) В m2m связи уже указана промежуточная модель, если вы не обратили внимание. Я там просто в through опечатался. Я, конечно, не правильно сформулировал 2ю задачу: не просто добавить дополнительные данные, а иметь возможность сделать это в админке.
На самом деле я пока вижу только один вариант: вывести в админку модель С и там проставить эти самые дополнительные данные. Но не очень удобно (получается есть лишние действия: сначала к модели а привязываются объекты из модели b, затем надо заходить в модель С и проставлять дополнительные данные по каждому объединениею a-b). Было бы лучше сделать так: при привязке объектов модели B к объектам модели А, указывать где-то эти самые доп.параметры, которые должны сохраняться в промежуточную модель C.



Отредактировано Dr.Livsi (Июль 1, 2013 11:25:56)

Офлайн

#5 Июль 6, 2013 09:46:44

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

django-grappelli and ManyToManyField

http://stackoverflow.com/questions/3153026/django-1-2-1-inline-admin-for-many-to-many-fields гляньте тут, люди обсуждают как inline интерфейс настроить для many-to-many, это вроде бы то, что вам нужно.

Офлайн

#6 Июль 7, 2013 17:27:10

Dr.Livsi
От:
Зарегистрирован: 2010-02-15
Сообщения: 192
Репутация: +  3  -
Профиль   Отправить e-mail  

django-grappelli and ManyToManyField

Спасибо :) Не смотрел, что там, но наверное именно так я уже и сделал. Через Inline.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version