相关疑难解决方法(0)

如何将request.user转换为代理auth.User类?

我有与此问题中提出的相同的难题,但适用于Django的auth.User.

我有这个代理模型:

class OrderedUser(User):
    def __unicode__(self):
        return self.get_full_name()

    class Meta: 
        proxy=True
        ordering=["first_name", "last_name"]
Run Code Online (Sandbox Code Playgroud)

我的一些其他模型使用的是字段类型OrderedUser而不是django.contrib.auth.models.User字段类型.

在我的视图中,我然后使用request.user填充字段和 - 正如预期 - 得到一个错误:

'Cannot assign "<User...>": <field> must be a "OrderedUser" instance'
Run Code Online (Sandbox Code Playgroud)

我可以做OrderedUser.objects.get(request.user.id),但这对数据库来说是一个额外的打击.

那么,如何将基础模型类转换为其代理类?

django django-models

17
推荐指数
2
解决办法
2725
查看次数

使用django,我如何从超类对象实例构造代理对象实例?

我仍然对代理模型与django中的超类之间的关系感到困惑.我现在的问题是如何从已经检索到的超类实例中获取代理模型的实例?

所以,让我说我有:

class Animal(models.Model):
   type = models.CharField(max_length=20)
   name = models.CharField(max_length=40)

class Dog(Animal):  
   class Meta:
       proxy = True

   def make_noise(self):  
       print "Woof Woof"  

Class Cat(Animal):  
   class Meta:
       proxy = True

   def make_noise(self):  
       print "Meow Meow"

animals = Animal.objects.all()
for animal in animals:
   if (animal.type == "cat"):
      animal_proxy = # make me a cat
   elif (animal.type == "dog"):
      animal_proxy = # make me a dog
   animal_proxy.make_noise()
Run Code Online (Sandbox Code Playgroud)

好.那么......"让我成为一只猫"的内容不需要回溯到数据库,例如:

animal_proxy = Cat.objects.get(id=animal.id)
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法从Animal的一个实例创建一个Cat实例,我知道它是一只猫?

python django django-models

5
推荐指数
1
解决办法
1651
查看次数

标签 统计

django ×2

django-models ×2

python ×1