我正在尝试创建可编辑的对象集。 我有访客模型,其中可以包含一组模型兄弟姐妹。但该集合可能是空白的。这个集合应该可以在Django管理员中编辑,并且我希望它将由内置工具生成。
这是我的方法:
class Sibling(models.Model):
VisitorID = models.ForeignKey('Visitor')
# ... some fields
class Visitor(models.Model):
# ... some fields
Siblings = models.ManyToManyField(Sibling, blank=True)
这是不好的方法,因为django admin中自动生成的表单中存在来自所有访问者的所有兄弟姐妹,但我只想要与特定访问者相关的那些。
有人可以帮助我或提供建议吗?
答案 0 :(得分:0)
使用Serializer类实现此目的的一种方法
class Sibling(models.Model):
VisitorID = models.ForeignKey('Visitor')
# ... some fields
class Visitor(models.Model):
# ... some fields
class VisitorSerializer(serializers.ModelSerializer):
sibling = serializers.RelatedField(source='sibling')
class Meta:
model = Visitor
# List all fields in Visitor plus sibling
fields = ('id', 'somefieldinvisitormodel', 'sibling')
序列化程序类允许您覆盖管理员显示的内容,而不必弄乱您的模型。这也允许您删除您在访问者中添加的额外关系。
这不是一个完全自动化的解决方案,但它已经接近了。