Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么打印出不同的名字?在Django_Python_Django - Fatal编程技术网

Python 为什么打印出不同的名字?在Django

Python 为什么打印出不同的名字?在Django,python,django,Python,Django,我想打印所有相同的结果。 我的代码: models.py: class Product(models.Model): name = models.CharField(max_length=100) image = models.ImageField(upload_to='images') description = models.TextField(max_length=10000, blank=True, null=True) category = models

我想打印所有相同的结果。 我的代码:

models.py:

class Product(models.Model):
    name = models.CharField(max_length=100)
    image = models.ImageField(upload_to='images')
    description = models.TextField(max_length=10000, blank=True, null=True)
    category = models.ManyToManyField(Category, related_name='category')
    company = models.ForeignKey(Company, related_name='company', on_delete=models.CASCADE)
    price = models.IntegerField()
    discount = models.IntegerField(default=0)
views.py:

        excludeCompanyId = []
        company = Company.objects.all().order_by('?').exclude(id__in=excludeCompanyId)[:1]#random 1 company
        companyName = company[0].name
        print(companyName)

        companyProduct = Product.objects.filter(company=company).order_by('?')[:10]
        print(companyProduct[0].company)

        for i in companyProduct:
            print(i.company)
结果在不同的时间会有所不同

但我想告诉你们一个结果:

Tesla
Apple Inc.
Sony
Sony
Sony
Sony
我想打印所有相同的结果。我该怎么做?

。按('?')排序。
随机排序查询集。但是看起来你确实想要一个随机的
公司
,这里真正的问题是你实际上没有使用你得到的随机公司并重用QuerySet,而是有效地进行子查询

下面是您的代码副本,其中包含注释,以解释到底哪里出了问题:

excludeCompanyId=[]
company=company.objects.all().order_by('?').exclude(id_uin=excludeCompanyId)[:1]
#这里的company不是company的实例,而是QuerySet
companyName=company[0]。name#您在编写'company[0]'时进行了查询,但注意'company'仍然未计算
打印(公司名称)
companyProduct=Product.objects.filter(company=company).order_by('?')[:10]
#你写“过滤器(公司=公司)`
#这有效地生成了一个子查询,表示“Product”中的每一行`
#如果公司与产品相同,则随机选择“公司”
#公司,然后选择产品
打印(公司产品[0]。公司)
您需要做的是实际评估查询并获得一个产品,然后在其他查询中使用它。也可以使用以下命令代替切片
[:1]

excludeCompanyId=[]
company=company.objects.all().order_by('?').exclude(id_uin=excludeCompanyId).first()
如果公司没有:
#这里没有匹配的公司返回适当的内容
打印(公司名称)
companyProduct=Product.objects.filter(company=company).order_by('?')[:10]
对于公司产品中的i:
打印(即公司名称)

那么你认为,
订购人(“?”)
做什么?好吧,它随机订购queryset,所以如果你故意这样写,我不知道什么能解决你的问题。@Abdul Aziz Barkat,那么我怎么能得到一个随机公司?有了那个随机公司,我想得到产品型号的前10个产品谢谢先生。它起作用了。愿真主帮助你。