几天以来,我一直在寻找解决这个问题的最简单方法。所以我有模型,用户,公司模型和产品型号如下。
model .py
class Company(models.Model):
name=models.CharField(models.Model)
user=models.ForeignKey(user,unique=True,null=True,related_name="user")
follow=models.ManyToMany(user,related_name="follow",null=True)
class Product(models.Model):
name=models.Charfield(models.Model)
company=models.ForeignKey(Company,related_name="Product",null=True)
在我看来
def Display(request):
#get all products
products=Product.objects.all()
#get all company objects
companies=Company.objects.all()
所以这个想法是用户可以关注公司和公司可以发布产品。假设userA跟随companyA(usA已被添加到公司的ManyToManyField),当companyA发布产品时,产品将显示在usA时间轴中。我做过研究,甚至还遇到了一个名为django activity streaming的应用程序。我很难融入我的项目。因为我只是在寻找简单的东西。我正在阅读跟踪所有模型的django contenttype,但我不知道如何实现它来解决我的问题。如果您对如何使用django查询集或任何建议解决此问题有所了解请。我很乐意欣赏。
答案 0 :(得分:0)
假设您有一个用户对象。您可以使用related_name
mod访问反向关系,然后通过该关系获取该用户关注的所有公司,之后我们可以根据这些公司获取所有产品:
companies user.follow.all()
products = Product.objects.filter(company__in=companies)
products
将包含属于其中一个用户公司的所有产品的列表,如果您遇到问题,如果有重复的产品,则可以使用distinct()
queryset方法进行修复。< / p>