Dak*_*san 5 python django forward-declaration
好的,因此使用Django REST框架教程中的直接示例,我有2个类:UserSerializer和SnippetSerializer。我希望能够在SnippetSerializer类声明中将“ UserSerializer”用作序列化程序,但是由于某些原因,需要首先声明SnippetSerializer。代码示例:
class SnippetSerializer(serializers.HyperlinkedModelSerializer):
owner = UserSerializer()
#unimportant stuff
class UserSerializer(serializers.HyperlinkedModelSerializer):
#unimportant stuff - lets say we reference SnippetSerializer here
Run Code Online (Sandbox Code Playgroud)
我想到的明显答案是前向声明,但是从我的所有研究中,我无法在Python中找到它。
我认为可能可行的另一种解决方案,但没有(也许我做错了吗?),而是尝试在init方法中声明此关系。
class SnippetSerializer(serializers.HyperlinkedModelSerializer):
def __init__(self, *args, **kwargs):
self.owner = UserSerializer()
super(SnippetSerializer, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
但这似乎被框架完全忽略了。
我也尝试使用@addto,但似乎仅适用于函数,不适用于属性/属性
有办法解决这个问题吗?这个“先有鸡”类问题已经在Python中杀死了我一段时间,但是我终于遇到了一个实例,该实例实际上阻止了我完成工作。
小智 -2
这个问题听起来与 StackOverflow 上发布的其他 Django 前向声明问题非常相似。你能使用类似这种方式的前向声明吗?您需要将owner成员包装在 Django 函数调用中,我不知道在这种情况下是否有合适的调用。该解决方案也是 Django 特有的,而不是 Python 的本机功能。
| 归档时间: |
|
| 查看次数: |
1147 次 |
| 最近记录: |