如何在django/python中动态创建对象?

ted*_*toy 3 python django dynamic

在我的代码中,我有很多if/elif语句,如下所示:

if type == "cat":
    vote = VoteCat (
        user = user,
        cat_id = thing_id )
    vote.save()
elif type == "dog":
    vote = VoteDog (
        user = user,
        dog_id = thing_id )
    vote.save()
Run Code Online (Sandbox Code Playgroud)

更改我的代码以摆脱if语句并动态实例化我需要的对象有什么好方法?我希望我可以编写的代码完成与上面相同的代码,但看起来更像是这样:

AnimalVote = get_animalvote_by_type(type)
AnimalVote.user = user
AnimalVote.assign_animal_id(thing_id)
AnimalVote.save()
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 6

最简单的翻译是:

types = dict('cat' = CatType, 'dog' = DogType)
newobj = types[type](user = user, cat_id = thing_id)
Run Code Online (Sandbox Code Playgroud)

显然,这取决于采用相同参数的类型.