在django admin中创建可编辑的模型对象集

时间:2016-01-29 15:02:56

标签: python django

我正在尝试创建可编辑的对象集。 我有访客模型,其中可以包含一组模型兄弟姐妹。但该集合可能是空白的。这个集合应该可以在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中自动生成的表单中存在来自所有访问者的所有兄弟姐妹,但我只想要与特定访问者相关的那些。

有人可以帮助我或提供建议吗?

1 个答案:

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

序列化程序类允许您覆盖管理员显示的内容,而不必弄乱您的模型。这也允许您删除您在访问者中添加的额外关系。

这不是一个完全自动化的解决方案,但它已经接近了。