Py学习  »  Django

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

N. Verkhovin • 4 年前 • 1021 次点击  

我有以下型号:

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
 
1021 次点击  
文章 [ 1 ]  |  最新文章 4 年前