django - админовские модели «многие ко многим», использующие through = и filter_horizontal
Вот как выглядят мои модели:
<code>class QuestionTagM2M(models.Model): tag = models.ForeignKey('Tag') question = models.ForeignKey('Question') date_added = models.DateTimeField(auto_now_add=True) class Tag(models.Model): description = models.CharField(max_length=100, unique=True) class Question(models.Model): tags = models.ManyToManyField(Tag, through=QuestionTagM2M, related_name='questions') </code>
Все, что я действительно хотел сделать, это добавить временную метку, когда было создано данное множество отношений. Это имеет смысл, но это также добавляет немного сложности. Помимо удаления функции .add () [несмотря на тот факт, что единственное поле, которое я действительно добавляю, создается автоматически, поэтому оно технически больше не должно мешать этому]. Но я могу жить с этим, так как я не против делать дополнительныеQuestionTagM2M.objects.create(question=,tag=)
вместо этого, если это означает получение дополнительной функциональности метки времени. Моя проблема в том, что я действительно хотел бы сохранить своиfilter_horizontal
Виджет JavaScript в админке. Я знаю, что в документах говорится, что вместо этого я могу использовать inline, но это слишком громоздко, потому что нет никаких дополнительных полей, которые могли бы быть внутри inline, кроме внешнего ключа дляTag
тем не мение. Кроме того, в большей схеме моей схемы базы данных мойQuestion
объекты уже отображаются как встроенные на моей странице администратора, и, поскольку Django не поддерживает вложенные встроенные строки в admin [пока], у меня нет возможности выбрать теги для данного вопроса. Есть ли способ переопределитьformfield_for_manytomany(self, db_field, request=None, **kwargs)
или что-то подобное, чтобы учесть мое изящноеfilter_horizontal
виджет и автоматическое созданиеdate_added
столбец в базу данных? Это похоже на то, что django должен иметь возможность делать изначально, если вы укажете, что все столбцы в промежуточном звене создаются автоматически (кроме внешних ключей), возможно, сauto_created=True
? или что-то подобное