我具有以下模型结构:
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
这最终有点纠结,但希望您能度过难关。