如何修复django中的valueerror?

时间:2012-05-02 13:26:52

标签: python django django-models

我在给定模型时返回列表时遇到问题。我的模型:

class Club(models.Model):
    establishment = models.CharField(max_length=200)
    address = models.CharField(max_length=200)
    def __unicode__(self):
        return self.establishment

class Available(models.Model):
    club = models.ForeignKey(Club)
    court = models.CharField(max_length=200)
    avail_time = models.DateTimeField('available time')
    def __unicode__(self):
        return self.court

我正在尝试运行“Available.objects.filter(club =”AV Club“),但我得到”ValueError:int(无效的文字,基础10:'AV Club'“。我的最终目标是能够返回给予俱乐部的avail_times列表。

有关如何修复的任何想法?这可能是一个超级基本的问题,但我是django的新手并且一直在为此而奋斗。谢谢!

2 个答案:

答案 0 :(得分:5)

club arg应该是Club实例或其pk(在您的情况下为整数)。你需要这个

Available.objects.filter(club__establishment="AV Club")

答案 1 :(得分:1)

使用__(双下划线)将外键关系跨越django

所以club只是一个整数的ForeignKey,这就是为什么你得到ValueError所以它看起来你想要的是建立而DrTyrsa显示了如何查询它的例子。

您可以根据需要跨越多个外键关系(了解性能影响)

如果俱乐部对国家有FK,而国家有代码字段,请想象:

Available.objects.filter(club__country__code="USA")

https://docs.djangoproject.com/en/dev/topics/db/queries/