这是我的模型的外观:
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_horizontal
在管理员中保留我的 javascript 小部件。我知道文档说我可以使用内联,但这太笨拙了,因为除了外键之外,实际上没有其他字段可以在内联中Tag
。
此外,在我的数据库架构的更大方案中,我的Question
对象已经在我的管理页面上显示为内联,并且由于 Django 不支持管理中的嵌套内联 [尚未],我无法为给定选择标签问题。
有没有什么方法可以覆盖formfield_for_manytomany(self, db_field, request=None, **kwargs)
或类似的东西来允许我使用漂亮的filter_horizontal
小部件并自动创建date_added
数据库的列?
这似乎是 django 应该能够在本机上做的事情,只要您指定中间的所有列都是自动创建的(除了外键),也许是auto_created=True
? 或类似的东西