社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

从django model查询ManyToManyField时,必须使用model name而不是field name

N. Verkhovin • 5 年前 • 1842 次点击  

我有以下型号:

class ShoppingList(models.Model):
    name = models.CharField(max_length=100, default='Main')
    owners = models.ManyToManyField(User, through='ListOwner')


class ListOwner(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    shopping_list = models.ForeignKey(ShoppingList, on_delete=models.CASCADE)
    is_main_owner = models.BooleanField(default=False)

接下来,我想问 ShoppingList 我用过这个 https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships 作为一个例子。

我希望正确的方法是使用这种结构:

@login_required
def index(request):
    shopping_list = ShoppingList.objects.filter(owners__user=request.user)\
        .order_by('id').first()
# something else

但在这种情况下,我得到一个错误: Related Field got invalid lookup: user

使用时一切正常 listowner owner 在里面 filter() 功能如下:

shopping_list = ShoppingList.objects.filter(listowner__user=request.user)\
        .order_by('id').first()

有谁能告诉我为什么第一个不起作用(虽然建议在Django文档中使用它)?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56921
 
1842 次点击  
文章 [ 1 ]  |  最新文章 5 年前