gpt4 book ai didi

python - “不同”条目仅用于使用 Django 创建 sitemap.xml 文件 (1.5.4)

转载 作者:行者123 更新时间:2023-12-01 04:48:15 25 4
gpt4 key购买 nike

我正在尝试在 Django 中输出 sitemap.xml 文件,并且已按照以下步骤成功执行此操作。

<url>
<loc>http://example.com/day/AAA</loc>
</url>
<url>
<loc>http://example.com/day/AAA</loc>
</url>
<url>
<loc>http://example.com/day/BBB</loc>
</url>

...等等

但是,正如您从我附加的站点地图文件中看到的那样,我尝试仅返回不同的“名称”字段作为每个子域的每次添加,在我的数据库中,此“名称”字段经常重复,但我只每次都希望在站点地图中出现一次。目前正在尝试通过 Django 的“.disctint()”来执行此操作,似乎返回一个字典列表,因此它应该类似于:

<loc>http://example.com/day/AAA</loc>
</url>
<url>
<loc>http://example.com/day/BBB</loc>
</url>

...等等

但是,它目前的返回方式如下:

<url>
<loc>http://example.com/day/AAA</loc>
</url>
<url>
<loc>http://example.com/day/AAA</loc>
</url>
<url>
<loc>http://example.com/day/AAA</loc>
</url>

等等...不断地,每次都只有第一个“名字”..

我当前的sitemaps.py文件如下:

from django.contrib import sitemaps
import datetime
from fruit.models import fruitmodel
from django.core.urlresolvers import reverse
from django.db.models import Sum

class fruitSitemap(sitemaps.Sitemap):
def __init__(self, names):
self.names = names

def items(self):
return fruitmodel.objects.all()


def location(self, obj):

dict = fruitmodel.objects.values_list('name', flat=True).distinct()
for i in dict:
return '/day/%s' % i
#return '/day/%s' % obj.name """ Current 'working' option, without distinct """

我的模型如下:

class fruitmodel(models.Model):
name = models.CharField(max_length=128, unique=False)
likes = models.IntegerField(default=0)
date = models.DateField()
veggeorfruit = models.CharField(default="vegetable", max_length=128, unique=False)

def __unicode__(self):
return self.name

如果您有任何需要添加的内容,我们将不胜感激。预先非常感谢:)

根据要求:模拟打印语句 (printer.py)

from fruit.models import fruitmodel

print( fruitmodels.objects.order_by('name').values_list('name', flat=True).distinct().query)

给出“django.core.exceptions.ImproperlyConfigured:请求设置数据库,但未配置设置。您必须定义环境变量 DJANGO_SETTINGS_MODULE 或在访问设置之前调用 settings.configure()。”

最佳答案

问题出在您的 items 方法中,而不是您的 location 方法中。 items 方法用于生成站点地图中的项目列表,location 方法应该返回一个位置(给定作为其 传递的一项) >obj 参数。

所以试试这个:

def items(self):
return fruitmodel.objects.distinct('name')

def location(self, obj):
return '/day/%s' % obj.name

编辑:上面的内容似乎只在 PostgreSQL 中有效(我认为)。对于不支持DISTINCT ON的数据库,您可以尝试:

def items(self):
return list(set([f.name for f in fruitmodel.objects.all()]))

def location(self, obj):
return '/day/%s' % obj

但我认为更好的解决方案是考虑您的模型,以便 name 实际上是唯一的,并将日期作为相关对象。

关于python - “不同”条目仅用于使用 Django 创建 sitemap.xml 文件 (1.5.4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28975467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com