我希望重构一些代码,这些代码具有特殊类型的用户LucyGuide
,与Django的User
模型具有一对一的关系:
from django.db import models
from django.contrib.auth.models import User
class LucyGuide(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
@classmethod
def lucy_guide_user_ids(cls):
return [guide.user_id for guide in cls.objects.all()]
在某些用例中,我们需要具有相应User
的所有LucyGuide
,其获得方式如下:
User.objects.filter(id__in=LucyGuide.lucy_guide_user_ids())
这对我来说似乎相当冗长,似乎应该有一种更简洁的方式。任何想法如何重构这个?
答案 0 :(得分:1)
我相信答案是
User.objects.exclude(lucyguide=None)
这样可以完全取消lucy_guide_user_ids()
方法。