django admin many-to-many промежуточные модели с использованием through= и filter_horizontal

Вот как выглядят мои модели:

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')

Все, что я действительно хотел сделать, это добавить временную метку, когда было создано заданное отношение «многие ко многим». Это имеет смысл, но также добавляет немного сложности. Помимо удаления функциональности.add()[несмотря на то, что единственное поле, которое я действительно добавляю, создается автоматически-, поэтому технически оно больше не должно мешать этому]. Но я могу смириться с этим, так как я не возражаю вместо этого использовать дополнительный QuestionTagM2M.objects.create(question=,tag=), если это означает получение дополнительной функциональности метки времени. Моя проблема в том, что я действительно хотел бы иметь возможность сохранить мой виджет filter_horizontaljavascript в панели администратора. Я знаю, что в документах говорится, что вместо этого я могу использовать встроенный, но это слишком громоздко, потому что в любом случае нет дополнительных полей, которые на самом деле были бы встроенными, кроме внешнего ключа для Tag. Кроме того, в более крупной схеме схемы моей базы данных мои объекты Questionуже отображаются как встроенные на моей странице администратора, и, поскольку Django не поддерживает вложенные строки в панели администратора [пока], у меня нет возможности выбирать теги. на заданный вопрос. Есть ли способ переопределить formfield_for_manytomany(self, db_field, request=None, **kwargs)или что-то подобное, чтобы я мог использовать отличный виджет filter_horizontalи автоматическое создание столбца date_addedв базе данных? Это похоже на то, что django должен уметь делать изначально, если вы укажете, что все столбцы в промежуточном звене автоматически создаются (, кроме внешних ключей ), возможно, с помощью auto_created=True? или что-то в этом роде

17
задан okm 18 April 2012 в 13:49
поделиться