Python Django双工作台接头

Python Django双工作台接头,python,sql-server,django,Python,Sql Server,Django,我使用了$python manage.py inspectdb从MSSQL中获取以下表格,Book表格可能有很多图片,因此我检查了它的forignkey的Mpeg表格 在foreignkey=book\u id model.py class Book(models.Model): book_id = models.AutoField(db_column='book_id', primary_key=True) # Field name made lowercase. book_

我使用了
$python manage.py inspectdb
从MSSQL中获取以下表格,Book表格可能有很多图片,因此我检查了它的forignkey的Mpeg表格

foreignkey=book\u id

model.py

class Book(models.Model):
    book_id = models.AutoField(db_column='book_id', primary_key=True)  # Field name made lowercase.
    book_name = models.CharField(db_column='book_name', max_length=100, blank=True, null=True)  # Field name made lowercase.   
    media = models.CharField(max_length=200, blank=True, null=True)
    class Meta:
        db_table = 'book'

class Mpeg(models.Model):
    picture_id = models.AutoField(primary_key=True)
    picture_name = models.CharField(max_length=50)
    picture_type = models.CharField(max_length=50)
    picture_url = models.CharField(max_length=100)
    foreignkey = models.IntegerField(db_column='foreignKey')  # Field name made lowercase.
    class Meta:
        db_table = 'mpeg'
def map_player_post(request, book_id):
    book = models.Book.objects.get(book_id = book_id)
    mpeg = models.Mpeg.objects.all() #Tried filter but failed
    template = get_template('map.html')
    request_context = RequestContext(request)
    request_context.push(locals())
    if book != None:
        html = template.render(request_context)
        return HttpResponse(html)
视图.py

class Book(models.Model):
    book_id = models.AutoField(db_column='book_id', primary_key=True)  # Field name made lowercase.
    book_name = models.CharField(db_column='book_name', max_length=100, blank=True, null=True)  # Field name made lowercase.   
    media = models.CharField(max_length=200, blank=True, null=True)
    class Meta:
        db_table = 'book'

class Mpeg(models.Model):
    picture_id = models.AutoField(primary_key=True)
    picture_name = models.CharField(max_length=50)
    picture_type = models.CharField(max_length=50)
    picture_url = models.CharField(max_length=100)
    foreignkey = models.IntegerField(db_column='foreignKey')  # Field name made lowercase.
    class Meta:
        db_table = 'mpeg'
def map_player_post(request, book_id):
    book = models.Book.objects.get(book_id = book_id)
    mpeg = models.Mpeg.objects.all() #Tried filter but failed
    template = get_template('map.html')
    request_context = RequestContext(request)
    request_context.push(locals())
    if book != None:
        html = template.render(request_context)
        return HttpResponse(html)
模板

<h4>{{book.mpeg.count}}</h4> //get the book count
{{book.mpeg.count}}//获取图书计数
书桌上可能有许多图片

为此,您必须在
Mpeg
模型中使用一个,如下所示:

class Mpeg(models.Model):
    picture_id = models.AutoField(primary_key=True)
    picture_name = models.CharField(max_length=50)
    picture_type = models.CharField(max_length=50)
    picture_url = models.CharField(max_length=100)
    book = models.ForeignKey('Book', models.CASCADE)
    # remove the foreignkey = models.IntegerField(db_column='foreignKey')

    class Meta:
        db_table = 'mpeg'
book = Book.objects.get(book_id=book_id)
mpeg = Mpeg.objects.filter(book=book)
book = Book.objects.get(id=book_id)
mpeg = Mpeg.objects.filter(book=book)
现在运行
/manage.py makemigrations
/manage.py migrate
,然后(当然,在填充一些数据之后)可以执行如下查询:

class Mpeg(models.Model):
    picture_id = models.AutoField(primary_key=True)
    picture_name = models.CharField(max_length=50)
    picture_type = models.CharField(max_length=50)
    picture_url = models.CharField(max_length=100)
    book = models.ForeignKey('Book', models.CASCADE)
    # remove the foreignkey = models.IntegerField(db_column='foreignKey')

    class Meta:
        db_table = 'mpeg'
book = Book.objects.get(book_id=book_id)
mpeg = Mpeg.objects.filter(book=book)
book = Book.objects.get(id=book_id)
mpeg = Mpeg.objects.filter(book=book)
[奖金]:您可以删除
图片id
图书id
字段,因为Django将自动为您添加
id
。然后你可以像这样重写上面的表达式:

class Mpeg(models.Model):
    picture_id = models.AutoField(primary_key=True)
    picture_name = models.CharField(max_length=50)
    picture_type = models.CharField(max_length=50)
    picture_url = models.CharField(max_length=100)
    book = models.ForeignKey('Book', models.CASCADE)
    # remove the foreignkey = models.IntegerField(db_column='foreignKey')

    class Meta:
        db_table = 'mpeg'
book = Book.objects.get(book_id=book_id)
mpeg = Mpeg.objects.filter(book=book)
book = Book.objects.get(id=book_id)
mpeg = Mpeg.objects.filter(book=book)

class
是python中的保留关键字!!尝试为变量使用另一个名称。好的,我举了一个错误的示例。我改名字。