为了账号安全,请及时绑定邮箱和手机立即绑定

每次用户添加帖子时,他的信息都会重复。我该如何防止?

每次用户添加帖子时,他的信息都会重复。我该如何防止?

鸿蒙传说 2021-11-09 20:07:46
每次用户添加新帖子时,用户信息中的国家/地区名称都会重复。例如。美国有人加贴,美国名字重复了很多次。我尝试使用不同的 'country = Post.objects.all().distinct('country')' 然后我收到这个错误 'DISTINCT ON fields is not supported by this database backend'。我的意见.pydef countries(request):    country = Post.objects.all().distinct('country')    context = {            'posts': country    }    return render(request, 'users/countries.html', context)我的模型.pyfrom PIL import Imagefrom django.db import modelsfrom django.urls import reversefrom django.utils import timezonefrom django.db.models.signals import post_savefrom django.contrib.auth.models import AbstractUserclass User(AbstractUser):    first_name = models.CharField(verbose_name="First name", max_length=255)    last_name = models.CharField(verbose_name="First name", max_length=255)    country = models.CharField(verbose_name="Country name", max_length=255)    city = models.CharField(verbose_name="City name", max_length=255)    email = models.EmailField(verbose_name="Email", max_length=255)    def __str__(self):        return self.usernameclass Post(models.Model):    title = models.CharField(max_length=255)    country = models.CharField(max_length=255)    city = models.CharField(max_length=255)    address = models.CharField(max_length=255)    email = models.EmailField(max_length=255)    phone = models.CharField(max_length=255)    website = models.URLField(max_length=255)    date_posted = models.DateTimeField(default=timezone.now)    author = models.ForeignKey(User, on_delete=models.CASCADE)    def __str__(self):        return self.title    def get_absolute_url(self):        return reverse('users:blog')
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

如果您只需要国家/地区列表,为什么不使用.values()?如果您想要国家/地区列表,我认为以下代码应该可以完成这项工作?

countries = Post.objects.values("country").distinct()

结果将是一个带有类似 dict 对象的查询集,即:

[{"country": "USA"}, {"country": "Canada"}, ...]


查看完整回答
反对 回复 2021-11-09
?
慕斯709654

TA贡献1840条经验 获得超5个赞

我猜您正在使用 SQLite 数据库。.distinct()不能与 sqlite3 一起使用,因此您必须切换到 postgresql 之类的东西才能使用它或修改您的查询。

所以如果你不能改变你的数据库,那么只需手动过滤你的数据库。但认为切换到另一个数据库将是这个问题的最佳解决方案


查看完整回答
反对 回复 2021-11-09
  • 2 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信