开发者

Django: reasonably complex queries involving OneToOneField filters?

Can anyone help me with some reasonably complex Django queries?

These are my models:

class County(m开发者_JAVA百科odels.Model):
    name = models.CharField(max_length=100)
class Place:
    id = models.IntegerField(primary_key=True)
    county = models.ForeignKey(County) 
class Translation(models.Model):
    place = models.OneToOneField(Place,null=True)
    county = models.ForeignKey(County) # Have denormalised for ease, but could delete this.  
    text = models.TextField()
    user = models.ForeignKey(User, null=True, blank=True)
    user_ip = models.IPAddressField()
    created = models.DateField(auto_now_add=True)

How can I run the following queries?

  • Find the users with more than one translation, and order then by descending number of translations
  • For a given county, find the places without an associated translation
  • For a given county, find the 5 users with the most translations

Should I change the database setup to make this easier?

thanks!


User.objects.all().annotate(Count('translation')).order_by('-translation__count')

County.place_set.filter(translation=None)

User.objects.all().filter(
   translation__county__name="my_county"
).annotate(Count("translation")).order_by('-translation__count')[:5]
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜