Bin*_*oka 2 python django django-models
我对 Python 很陌生,我认为这个问题应该很容易回答。
我的问题简化是这样的......
我在文件类 A 和类 B 中有 2 个类。首先在文件中定义类 A,然后在第二个定义类 B。
class A
...
class B
...
Run Code Online (Sandbox Code Playgroud)
如何通过 A 类访问 B 类?
class A
something = B
class B
somethingElse = A
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试修复的实际代码
class FirstResource(_ModelResource):
class Meta(_Meta):
queryset = First.objects.all()
resource_name = 'first'
allowed_methods = ['get','put']
filtering = {
'a': ALL_WITH_RELATIONS,
'b': ALL_WITH_RELATIONS,
'c': ALL_WITH_RELATIONS,
}
ordering = ['apt']
# this is the line that would fix everything
second = fields.ForeignKey(SecondResource, 'second', null=True, blank=True, default=None, full=True)
...
class SecondResource(_ModelResource):
class Meta(_Meta):
queryset = Second.objects.all()
resource_name = 'second'
execute_methods = ['get', 'post']
filtering = {
'name': ['exact'],
'leader': ['exact'],
}
super = fields.ForeignKey(FirstResource, 'super', null=True, blank=True, default=None, full=True)
leader = fields.ForeignKey(FirstResource, 'leader', null=True, blank=True, default=None, full=True)
...
Run Code Online (Sandbox Code Playgroud)
由于没有在 Python 中预先声明,我真的不知道如何解决这个问题。models.py 中的 First 的外键为 Second,而 Second 的外键为 First 的两个。
将 A 移到 B 下方并不能解决问题,因为 B 也需要 A。我没有编写代码,我只是想修复它 - 当我对资源执行“获取”操作时,我需要返回“第二个”外键在两个班级。
要访问B,您必须首先定义B.
如果要B在定义 时访问A,则需要将其移动A到文件的上方。
如果您想B在调用 中的方法 时访问A,则无需执行任何操作:当您调用 中的方法时A,解释器已经执行了所有定义。
所以答案是使用 qoutes
B = fields.ForeignKey('api.resources.B', 'B')
Run Code Online (Sandbox Code Playgroud)