我有两个相同的模型,让我们在django中说X和Y像这样:
class X(models.Model):
con = models.CharField(max_length=100)
a = models.ForeignField("FOO")
class Y(models.Model):
con = models.CharField(max_length=100)
b = models.ForeignField("BAR")
要访问这些模型的对象,我必须使用以下代码:
models.X.objects.get(
con = "something",
a = xy
)
models.Y.objects.get(
con = "something",
b = yx
)
有没有办法将模型名称设置为变量,例如model_name = X
,然后使用此代码访问对象:
models.model_name.objects.get(**my_dict)
,其中
my_dict = {"con":"something", "a":xy}
答案 0 :(得分:2)
你可以这样做:
getattr(models, model_name).objects.get(**my_dict)
它允许您通过字符串或变量访问models
的属性。
答案 1 :(得分:1)
你当然可以:
setattr(models, 'model_name', models.X)
这会将model_name
属性设置为models.X(或models.Y),这将使您的呼叫models.model_name.objects.get(**my_dict)
成功。
或者,您可以在开始工作之前保存要在变量中使用的模型,然后再使用它:
model_name = models.X
model_name.objects.get(**my_dict)