在Django中将相关管理器与代理模型配合使用

时间:2019-04-22 17:36:57

标签: django django-models

我具有以下模型结构:


class Abstract_model(models.Model)  # “Abstract model”, used to generate following 2 models. Abstract in this case is just a name
foreignkey1 = models.ForeignKey("Proxy_model_1")
foreignkey2 = models.ForeignKey("Just_a_Model")


class Proxy_model_1(Abstract_model) # proxy model 1( main)
class Meta:
proxy = True

class Proxy_model_2(Abstract_model)# proxy model 2(secondary)
class Meta:
proxy = True


class Just_a_Model((models.Model) # The model. Main one...

有1个基本“抽象”模型和2个从基本模型继承的代理模型。 Proxy_model_2与Proxy_model_1有多对一关系。所有3个模型(Abstract_model + 2个代理模型对Just_a_Model都有f / k)

目标(理论上)-Just_a_model.related_managet_to_proxy_model_2_set。 update_or_create()

问题如下: 在这种情况下如何使用相关管理器? 只能执行Just_a_Model .abstract_model_set.do_something,但我无法执行:

Just_a_Model .proxy_model_1_set.do_something
or
Just_a_Model .proxy_model_2_set.do_something

,无论两个代理模型均应继承Foreignkey1和Foreignkey2字段(它们都应连接到Just_a_model)。

我可以执行Proxy_model_2.objects.update_or_create(foreignkey2_id = self.id),但想了解在代理模型的情况下如何使用相关管理器。

class Just_a_Model((models.Model) 

…
…
…

def save(self, force_insert=False, force_update=False, using=None, update_fields=None):

self.proxy_model_2_set.update_or_create(name=self.some_field_name ) # doesnt work
self.abtract_model.do_something # does work!!!
models.Model.save(self, force_insert=False, force_update=False, using=None,
                        update_fields=None)

# I could do Proxy_model_2.objects.update_or_create(foreignkey_to_boat_id=self.id)
# or self.abtract_model.do_something

这最终有点纠结,但希望您能度过难关。

0 个答案:

没有答案