MySQL lite django 多表

标签 mysql django python-2.7

我正在学校开展一个项目,其中一个问题是列出拥有名为“Sophia”的(当前)球员的所有联赛。我已经能够得到所有联赛期间,所有球员的名字都是索菲亚。然而,我似乎无法弄清楚如何从最后一个表开始,其中名字是引用第一个表,联盟将在其中获得我需要的答案。我希望有人能看到我所看到的问题。我已经链接了下面的模型和 View 。

Manage.py

from django.db import models

class League(models.Model):
    name = models.CharField(max_length=50)
    sport = models.CharField(max_length=15)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

class Team(models.Model):
    location = models.CharField(max_length=50)
    team_name = models.CharField(max_length=50)
    league = models.ForeignKey(League, related_name="teams")

class Player(models.Model):
    first_name = models.CharField(max_length=15)
    last_name = models.CharField(max_length=15)
    curr_team = models.ForeignKey(Team, related_name="curr_players")
    all_teams = models.ManyToManyField(Team, related_name="all_players")


views.py 

from django.shortcuts import render, redirect
from .models import League, Team, Player

from . import team_maker

def index(request):
    context = {
        "leagues": League.objects.all(),
        "teams": Team.objects.all(),
        "players": Player.objects.all(),
        "baseball" : League.objects.filter(sport__contains="Baseball"),
        "women" : League.objects.filter(name__contains="Womens'"),
        "ice" : League.objects.filter(sport__contains="ice"),
        "nofootball" : League.objects.exclude(sport__contains="football"),
        "conferences" : League.objects.filter(name__contains="conference"),
        "atlantic": League.objects.filter(name__contains="Atlantic"),
        "teamdallas": Team.objects.filter(location__contains="Dallas"),
        "raptor": Team.objects.filter(team_name__contains="Raptor"),
        "cityloc": Team.objects.filter(location__contains="city"),
        "startT": Team.objects.filter(team_name__startswith="T"),
        "abc": Team.objects.order_by('location'),
        "cba": Team.objects.order_by('location').reverse(),
        "cooper": Player.objects.filter(last_name="Cooper"),
        "joshua": Player.objects.filter(first_name="Joshua"),
        "nocooper": Player.objects.filter(last_name="Cooper").exclude(first_name="Joshua"),
        "wyatt": Player.objects.filter(first_name="Alexander")|Player.objects.filter(first_name="Wyatt"),
        "atlanticsoccer" : Team.objects.filter(league__name__contains='atlantic', league__sport__contains="soccer"),
        "bostonp" : Player.objects.filter(curr_team__team_name__contains='Penguins'),
        "icbc" : Player.objects.filter(curr_team__league__name__contains='International Collegiate Baseball '),
        "footballlopez" : Player.objects.filter(curr_team__league__name__contains="American Conference of Amateur Football", last_name__contains="lopez"),
        "footballplayer" : Player.objects.filter(curr_team__league__sport__contains="football"),
        "sophia" : Team.objects.filter(curr_players__first_name__contains='sophia'),
        "sophiale" : Team.objects.filter(league__contains='sophia'),

    }

        print Team.objects.filter(league__contains='sophia')
        return render(request, "leagues/index.html", context)

def make_data(request):
    team_maker.gen_leagues(10)
    team_maker.gen_teams(50)
    team_maker.gen_players(200)

    return redirect("index")

index.html  just the part you need

<h5>Question 8</h5>
        {% for player in sophiale %}
        <li>{{player.name}}</li>
        {% endfor %}
        </ol>

最佳答案

试试这个:

League.objects.filter(teams__ all_players__first_name__contains='sophia')

关于MySQL lite django 多表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42902518/

相关文章:

python - 'super' 对象没有属性 '__eq__'

mysql - sql CHECK 约束无法正常工作

mysql - SQL预备语句

django - 当我在 Django 项目中使用时,为什么 HttpResponseRedirect.set_cookie 不起作用?

python - 我需要确保列表中只有某些字符?

python - 无法升级 pip

php - mysqli_multi_query 不工作,没有任何反应

java - 在 mySQL 上运行多个并发语句

css - 将CSS应用于Django为textarea生成的表单对象

Django 没有与参数的反向匹配