首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索ManyToManyField类

检索ManyToManyField类
EN

Stack Overflow用户
提问于 2016-11-25 17:52:55
回答 1查看 55关注 0票数 1

考虑到以下简化模型,我需要返回一个ManyToManyField的空ManyToManyField,但是我收到一个"AttributeError:'ReverseManyRelatedObjectsDescriptor‘对象没有属性'none'“

代码语言:javascript
复制
class AnimalFamily(models.Model):
  objects = GetOrNoneManager()
  siblings = objects.none()


class Countable(models.Model):
  @classmethod
  def get_peers(cls_obj,target_animal):
    animals = cls_obj.objects.get_or_none(siblings=target_animal)
    if animals:
      return animals.siblings.exclude(id=target_animal.id)
    else
      return cls_obj.siblings.none()    # <--- this fails <----

  class Meta:
    abstract = True


class BearFamily(AnimalFamily,Countable):
  siblings = models.ManyToManyField(Bear)

class GiraffeFamily(AnimalFamily,Countable):
  siblings = models.ManyToManyField(Giraffe)


class Bear(models.Model):
  pass

class Giraffe(models.Model):
  pass

如何访问泛型类方法中的"Bear"-Class或相应的“长颈鹿”-Class以返回正确QuerySet的空查询?

额外信息:

代码语言:javascript
复制
# dir(cls_obj.siblings) returns:
['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__set__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'field', 'related_manager_cls', 'through']
EN

回答 1

Stack Overflow用户

发布于 2016-11-25 19:14:37

错误消息明确指出了一个问题,即您要返回的对象没有名为"none“的属性。这可能就是你想要的:

代码语言:javascript
复制
if animals:
  return animals.siblings.exclude(id=target_animal.id)
else
  cls_obj.siblings = []   
  return cls_obj.siblings
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40810290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档